ロバメモ - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

○秒で○度 オブジェクトを回転する

やりたいこと

例えば、ボタンを押したら、3秒かけて360度回転したい場合
開店後は停止する。

コード

 [SerializeField]GameObject handle;
    bool rotStart = false;
    float speed = 3.0f;
    float rotAngle = 360f;
    float variation;
    float rot;

    void Start ()
    {
        variation = rotAngle / speed;
    }

    void Update ()
    {
        if (rotStart) {
            handle.transform.Rotate (0, 0, variation * Time.deltaTime);
            rot += variation * Time.deltaTime;
            if (rot >= rotAngle) {
                rotStart = false;
                handle.transform.localRotation = Quaternion.Euler (0, 0, 180);
            }
        }
    }

    public void OnBtn ()
    {
        //回転角度を初期化する。
        rot = 0f;
        handle.transform.localRotation = Quaternion.Euler (0, 0, 0);
        rotStart = true;
    }

解説

handle = 回転するオブジェクト
rotStart = アニメーション開始フラグ
speed = 秒数
rotAngle = 回転させたい角度
variation = 1秒間の変化量
rot = 回転した角度の総数を入れる変数