【Unity】アニメーションを使った回転

2023年9月15日

Transformのローテーションプロパティを更新する方法が一般的ですが、アニメーションを使っても実現することができます

実行結果

まずは実行の様子を動画で見てみましょう

実装

アニメーション設定

回転するオブジェクトの設定

アニメーションパラメータ設定

アニメーションカーブの設定

コード

オブジェクトにアタッチするコードです

using UnityEngine;
public class RotateSpeed : MonoBehaviour
{
    Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            animator.SetFloat("Speed", 0.5f);
            return;
        }
        if (Input.GetMouseButton(1))
        {
            animator.SetFloat("Speed", 2.0f);
            return;
        }
        animator.SetFloat("Speed", 1f);
    }
}

解説

このコードは、Unityゲームエンジンでのアニメーション制御を行うためのスクリプトです。以下にコードの主要な部分を説明します

Animator animator;

Animator型の変数animatorを宣言しています。この変数は、後でアニメーションコントローラーとの連携に使用されます。

void Start()

Startメソッドは、スクリプトがアクティブになったときに一度だけ実行されます。このメソッドでは、animator変数にアタッチされたゲームオブジェクトのAnimatorコンポーネントへの参照を取得しています。

void Update()

Updateメソッドは、フレームごとに呼び出され、ゲームの状態を更新するために使用されます。このメソッド内にゲームロジックが記述されています。

if (Input.GetMouseButton(0))

左クリック(マウスボタン0)が押されている場合、以下のコードブロックが実行されます。

animator.SetFloat("Speed", 0.5f);

Animatorの"Speed"パラメーターに0.5fの値を設定します。これにより、アニメーションの再生速度が変更されます。

if (Input.GetMouseButton(1))

右クリック(マウスボタン1)が押されている場合、以下のコードブロックが実行されます。

animator.SetFloat("Speed", 2.0f);

Animatorの"Speed"パラメーターに2.0fの値を設定します。これにより、アニメーションの再生速度が変更されます。

アニメーションの再生速度を変更しない場合、デフォルトで以下のコードが実行されます。

animator.SetFloat("Speed", 1f);

Animatorの"Speed"パラメーターに1.0fの値を設定します。

Unity,小技

Posted by hidepon