norablog-techのブログ

このブログは、自分の忘備録的にアウトプットするためのブログとなっております。

【Unity】「VRoidをUnityで動かす」#4(アニメーションの適用)【Mixamo】


www.youtube.com

今回は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);
        }
        
    }
}