[Unity]2Dゲームでスクリプトのみでアニメーションを付ける方法(画像付き)(2024)

下の同じキャラクターですが見た目が少し異なる3つの画像を用意し、これらの画像を順番に表示させることで紙芝居のようにして動いてるように見せます。

下の動画のような感じですね。
これをスクリプトのみでできるようにしていきます。

やり方はめちゃくちゃ簡単で、以下のコードをコピー&ペーストしてください(スクリプト名だけ変えてください)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public GameObject T_Pause1;
    public GameObject T_Pause2;
    public GameObject T_Pause3;
    // Start is called before the first frame update
    void Start()
    {
        Invoke("Pause2",0.5f* Time.deltaTime);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
   void Pause1()
    {
        Invoke("Pause2", 10f * Time.deltaTime);
        T_Pause1.SetActive(true);
        T_Pause2.SetActive(false);
        T_Pause3.SetActive(false);
    }
    void Pause2()
    {
        Invoke("Pause3", 10f * Time.deltaTime);
        T_Pause1.SetActive(false);
        T_Pause2.SetActive(true);
        T_Pause3.SetActive(false);
    }
    void Pause3()
    {
        Invoke("Pause1", 10f * Time.deltaTime);
        T_Pause1.SetActive(false);
        T_Pause2.SetActive(false);
        T_Pause3.SetActive(true);
    }
}

このスクリプトには「T_Pause1」「T_Pause2」「T_Pause3」というゲームオブジェクトがありますが、これらにさっきの画像を入れる形になります。「void Start()」にコードがありますが、これはPause2という関数を実行するコードで、下にそれぞれPause1、Pause2、Pause3という関数がありますね。

これらはそれぞれ3つの画像の内1つだけを表示するコードが含まれており、時間経過で別の関数を実行します(Invokeというコード)。これを繰り返すことで3つの画像がそれぞれ入れ違いで表示され、アニメーションのように見えます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です