しっぽを追いかけて

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

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

Unity で操作キャラを追いかけるキャラを作る

※ これは 2021/01/22 時点の Unity 2020.2.2f1 の情報です

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

前回は8方向にねこキャラを動かしてみたので、今度は動かすねこを追いかけるねこキャラを追加したい

追いかける8方向のキャラ絵は下記のサイトから茶トラ猫のキャラ絵をお借りした

スポンサードリンク

茶トラねこのキャラは前回と同様に8方向に動けるように BlendTree アニメーションを設定

その後 Hierarchy 上に Chaser という名前で GameObject を作り、下記のように SpriteRendererAnimator を設定後、Chaser.cs というファイル名でスクリプトを作って張り付ける!

f:id:matatabi_ux:20210122210758p:plain
追いかけるねこの GameObject

Chaser.cs の中身はこう

using UnityEngine;

public class Chaser: MonoBehaviour
{
    [SerializeField]
    private Cat cat = null;

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

    public void FixedUpdate()
    {
        // 距離を測る
        var distance = this.cat.transform.position - this.transform.position;
        var normalized = new Vector3(Mathf.Round(distance.normalized.x), Mathf.Round(distance.normalized.y), 0);

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

        // 追跡
        this.move = normalized * Time.deltaTime * 0.2f;
    }
}

Cat.cs をもとに操作キャラの座標との距離を計算してそちらに移動するようにしただけ

最後に ChaserCat の部分に忘れないように追いかけるねこキャラの GameObject を設定してお試し実行

f:id:matatabi_ux:20210122211206g:plain
追いかけるねこ

8方向に移動しながら追いかけてきた

スポンサードリンク