norablog-techのブログ

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

【Unity】「VRoidをUnityで動かす」(Mixamo編)(無音・解説なし)


www.youtube.com

ソースコード(これだけです):

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);
        }
        
    }
}