ことれいのもり

Unity2DでSpriteを時間経過で回転させる方法

はじめに

Unityで2DオブジェクトのSpriteを時間経過で回転させる方法を解説します。

回転方向は時計回り・反時計回りの両方を実装し、フラグで切り替えるようにしました。

また、回転にはQuaternionを使います。

環境

Unity: 6000.2.4f1

実装

1. Spriteオブジェクトの作成

Unityの「Hierarchyの左上 +ボタンかHierarchy上で右クリック」→「2D Object」→「Sprites」→「Square」でオブジェクトを追加します。


Spriteオブジェクトの作成


この追加したオブジェクトを回転させます。

例えばRotationのZ値に60を入力すると、オブジェクトが60度回転します。


Z値に60を代入したインスペクタ画像


回転した実行結果

2. RotateTest.csのコードを書く

時間経過で回転させるにはスクリプトを書く必要があります。

スクリプトは以下の通りです。

using UnityEngine;

public class RotateTest : MonoBehaviour
{
    [SerializeField, Header("回転スピード")]
    private float rotateSpeed = 100f;

    [SerializeField, Header("角度")]
    private float angle = 0f;

    [SerializeField, Header("時計回り方向か")]
    private bool isClockwise = true;

    void Update()
    {
        RotateImage();
    }

    /// <summary>
    /// 画像を回転させる
    /// </summary>
    private void RotateImage()
    {
        // 時計回り
        if (isClockwise)
        {
            angle -= rotateSpeed * Time.deltaTime;
        }
        // 反時計回り
        else
        {
            angle += rotateSpeed * Time.deltaTime;
        }

        transform.rotation = Quaternion.Euler(0, 0, angle);
    }
}


これを作成したSquareのオブジェクトにアタッチすれば準備完了です。


スクリプトをアタッチする

3. 実行する

実行すると時計回りにオブジェクトが回転します。

時計回りのgif


Is Clockwise のチェックをはずす(フラグを切り替える)と、反時計回りに回転します。

回転方向のフラグを変更する


反時計回りのgif

おわりに

今回はオブジェクトを自動で回転させるスクリプトを紹介しました。

ブログでUnityの記事を公開するのはこれで初めてですね。

今後も、簡単な機能を中心に紹介していきます。