【Unity】ScratchのブロックをUnityで再現しよう~見た目③~

次のコスチュームにする ScratchからUnityへ
次のコスチュームにする

Scratch のブロックを Unity で再現するときに、どのような方法があるのかを紹介していきます。

ScratchのブロックをUnityで再現しよう

次のコスチュームにする

Scratch の「次のコスチュームにする」ブロックを Unity で作ってみましょう。

次のコスチュームにする
次のコスチュームにする

準備

「見た目②」と同様に「2D(URP)」のプロジェクトを作成します。

アニメーション用のスプライトの用意

Scratch で「次のコスチュームにする」のようにしてアニメーションさせてみます。
アニメーション用のスプライトを用意しましょう。
今回は、アセットストアから無料のアセットを使ってみます。

アニメーション用のスプライト
アニメーション用のスプライト

こちらからダウンロードしてきました。
自分で絵を描いて用意してもいいですね。

Pixel Adventure 1 | 2D Characters | Unity Asset Store
Elevate your workflow with the Pixel Adventure 1 asset from Pixel Frog. Find this & more Characters on the Unity Asset S...

アセットストアからダウンロードして、インポートします。

アセットストアからインポート
アセットストアからインポート

Sprite の配置

「動き⑥」を参考にスプライトを配置します。

Sprite の配置
Sprite の配置

AnimSprite スクリプトの作成

Sprite のゲームオブジェクトに次の AnimSprite スクリプトを新規作成します。

using System.Collections;
using UnityEngine;

[RequireComponent(typeof(SpriteRenderer))]
public class AnimSprite : MonoBehaviour
{
    [SerializeField]
    private Sprite[] m_arSprite = null;     // スプライトの配列.
    [SerializeField]
    private float m_fAnimSpeed = 1f;        // アニメーションの速度.

    private int m_nSpriteIndex = 0;         // スプライトのインデックス.
    private SpriteRenderer m_rSpriteRenderer = null;    // SpriteRendererコンポーネント.

    void Start()
    {
        m_rSpriteRenderer = GetComponent<SpriteRenderer>();
        StartCoroutine(CoAnimRun());
    }

    /// <summary>
    /// 走るアニメーション.
    /// </summary>
    /// <returns></returns>
    private IEnumerator CoAnimRun() {
        while (true) {
            float fWaitTime = 1f;
            if (m_fAnimSpeed > 0f) {
                fWaitTime = 1f / m_fAnimSpeed;
            }
            // 次のスプライトに切り替えるまで待つ.
            yield return new WaitForSeconds(fWaitTime);
            m_nSpriteIndex++;
            if (m_nSpriteIndex >= m_arSprite.Length) {
                m_nSpriteIndex = 0;
            }
            // スプライトの切替.
            m_rSpriteRenderer.sprite = m_arSprite[m_nSpriteIndex];
        }
    }
}

動作確認

Unity エディター上で動作確認しましょう。
スプライト画像が切り替わってアニメーションしていれば成功です。
Inspector で AnimSpeed を大きくするとアニメーションが速く切り替わります。

動作確認
動作確認

プログラムのちょこっと解説

今回は「次のコスチュームにする」ために、複数のスプライト画像を切り替えるプログラムを作成しました。
Unity が用意しているコルーチンという機能を使うと、途中で「待つ」処理を入れれるので便利です。

コルーチン - Unity マニュアル
A coroutine allows you to spread tasks across several frames. In Unity, a coroutine is a method that can pause execution...

まとめ

Scratch の「次のコスチュームにする」ブロックと同じ動きを Unityで作ってみました。
キャラクターがアニメーションして動くと、ぐっとゲームっぽくなっていいですね。

Unity の機能を使い倒して、さらに面白いゲームを作れるようになりましょう。

コメント

タイトルとURLをコピーしました