【Unity】「VRoidをUnityで動かす」#4(アニメーションの適用)【Mixamo】
今回はVRoideのキャラクターにMixamoで適用したアニメーションを、Unityのプロジェクト上に展開していきます。
なお、この動画内の説明、前半は少し間違っています。
間違いやすいところなので、そこはわざと残し、15分ごろから、訂正と説明を行っています。
ご注意ください。
☆この動画を作るにあたって、「iHeartGameDev」チャネル様を参考にさせていただいております。
素敵な動画をありがとうございます。
URL:https://www.youtube.com/c/iHeartGameDev
私もまだ勉強を始めたばかりなので、勘違いや間違いがあるかもしれませんが、ご容赦ください。
ソースコード(これだけです):
AnimationStateController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimationStateController : MonoBehaviour
{
Animator animator;
int isRunningHash;
int isFastRunningHash;
int isJumpingHash;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
isRunningHash = Animator.StringToHash("isRunning");
isFastRunningHash = Animator.StringToHash("isFastRunning");
isJumpingHash = Animator.StringToHash("isJumping");
}
// Update is called once per frame
void Update()
{
bool isRunning = animator.GetBool(isRunningHash);
bool isFastRunning = animator.GetBool(isFastRunningHash);
bool isJumping = animator.GetBool(isJumpingHash);
bool runPressed = Input.GetKey("w"); // 走る
bool fastRunPressed = Input.GetKey("left shift"); // 早く走る
bool jumpPressed = Input.GetKey("space"); // Jumpする
// プレイヤーが走っていない状態、かつ、"w"キーが押された場合
if (!isRunning && runPressed)
{
// "isRunning"ブール値を"true"に設定(走る)
animator.SetBool(isRunningHash, true);
}
// プレイヤーが走っている状態、かつ、"w"キーが押されていない場合
if (isRunning && !runPressed)
{
// "isRunning"ブール値を"false"に設定(止まる)
animator.SetBool(isRunningHash, false);
}
// プレーヤーが速く走っていない状態、かつ、"w"キーと"左Shift"キー両方を押した場合
if (!isFastRunning && (runPressed && fastRunPressed))
{
// "isFastRunning"ブール値を"true"に設定(早く走る)
animator.SetBool(isFastRunningHash, true);
}
// プレーヤーが速く走っていない状態、かつ、"w"キー、または、"左Shift"キー、どちらかが"押されていない"場合
if (isFastRunning && (!runPressed || !fastRunPressed))
{
// "isFastRunning"ブール値を"false"に設定(早く走るのをやめる。走るか、止まるかは押されているキー次第)
animator.SetBool(isFastRunningHash, false);
}
// プレーヤーがJumpしていない状態、かつ、スペースキーが押された場合
if (!isJumping && jumpPressed)
{
// "isRunning"ブール値を"true"に設定(Jumpする)
animator.SetBool(isJumpingHash, true);
}
// プレーヤーがJumpしている状態、かつ、スペースキーが押されていない場合
if (isJumping && !jumpPressed)
{
// "isRunning"ブール値を"false"に設定(Jumpをやめる)
animator.SetBool(isJumpingHash, false);
}
}
}