しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Unity でカーソルキーで8方向移動させる

※ これは 2020/12/25 時点の Unity 2020.2.1f1 の情報です

最新版では動作が異なる可能性がありますのでご注意ください

前回は押しっぱなしでキャラが動くようにしたので、今度は8方向に動かしてみる

8方向のキャラ絵は下記のサイトから白猫のキャラ絵をお借りした

http://obane.tuzikaze.com/index.html

8方向白猫

手順としては下記の内容とあまり変わらない

Animator のウィンドウを開き、Blend Tree をダブルクリックで開いたら、中央のリストに斜め方向の4つの Motion を「+」ボタンを押下して追加後、それぞれの方向の Animation Clipを指定する

斜め方向のアニメーションを追加

あとは Cat.cs を編集

using UnityEngine;
using UnityEngine.InputSystem;

public class Cat : MonoBehaviour
{
    private Animator animator = null;
    private Vector2 move = Vector2.zero;

    public void Awake()
    {
        this.animator = this.GetComponent<Animator>();
    }

    public void Update()
    {
        if (this.move != Vector2.zero)
        {
            this.transform.Translate(this.move * Time.deltaTime * 3f);
        }
    }

    public void OnMove(InputAction.CallbackContext context)
    {
        // キー入力が離れた場合も更新される
        this.move = context.ReadValue<Vector2>();
        var normalized = new Vector3(Mathf.Round(move.normalized.x), Mathf.Round(move.normalized.y), 0);

        // 斜め方向も許容
        if (normalized != Vector3.zero)
        {
            this.animator.SetFloat("x", normalized.x);
            this.animator.SetFloat("y", normalized.y);
        }
    }
}

上下左右4方向に排他していたところを、斜め方向も許容するように変更

これで終わりなのでお試し

8方向移動

ぐるぐると回る白猫できた!