【Unity】往復するように回転させる

投稿者: | 2021-04-09

オブジェクトを往復するように回転させてみました。

往復する値は三角関数で作ります。

このxに経過時間を渡します。xに値をかけると、回転速度を変えられます。

また、例えば全体に45をかけると、マイナス45度~45度の範囲を往復します。

スクリプトでは、回転を加えるために、Startメソッドでデフォルトの回転値を保存して、三角関数から作る回転と合成しました。

using UnityEngine;

public class RotateTest2 : MonoBehaviour
{
    float sec;
    Quaternion defaultRotation;

    [SerializeField] float angle;
    [SerializeField] float rotateSpeed = 1f;

    // Start is called before the first frame update
    void Start()
    {
        defaultRotation = transform.rotation;
    }

    // Update is called once per frame
    void Update()
    {
        sec += Time.deltaTime;
        transform.rotation = Quaternion.AngleAxis(Mathf.Sin(sec * rotateSpeed) * angle, Vector3.up) * defaultRotation;     
    }
}

Quaternion.AngleAxisメソッドの第二引数に回転の軸を渡します。Vector3.upを渡すと、ワールドのY軸に沿って回転します。

スクリプトで角度と回転のスピードを指定しています。

これで往復するように回転させられました。

-45~45
-90~90

コメントを残す

メールアドレスが公開されることはありません。