一気に向かせるのではなく、少しずつ回転させたい。
ずっと回転し続けるオブジェクトを作りたい。
なんか簡単に回転させたい。
そんな時に使える手段の一つとして「transform.Rotate」を紹介します。
手っ取り早い実装方法
//回転の速度を設定 private float rotateSpeed = 150f; //z軸で回転させたいのでzだけ1にする private Vector3 rotasionVector = new Vector3(0, 0, 1); private void Update() { /// Z軸で回転 * 回転速度 * Time.deltaTime transform.Rotate(rotasionVector * rotateSpeed * Time.deltaTime); }
とりあえず回転させたいオブジェクトに適用することで回り続けます。
さらに前進処理などと合わせることによって下の画像のような挙動が可能です。
キーボードの矢印キーで方向転換ができるようになりました。
private float moveSpeed = 2f; private float rotateSpeed = 150f; private Vector3 rotasionVector = new Vector3(0, 0, 1); private void Update() { //前進処理 transform.Translate(Vector3.up * this.moveSpeed * Time.deltaTime); if (Input.GetKey(KeyCode.LeftArrow)) transform.Rotate(rotasionVector * rotateSpeed * Time.deltaTime); if (Input.GetKey(KeyCode.RightArrow))/// rotateSpeedに-を付けて逆回転 transform.Rotate(rotasionVector * -rotateSpeed * Time.deltaTime); }
詳しい解説
「transform.Rotate」は現在の回転にVectorで指定した角度を追加する関数です。
なのでvoid Update()に書いた場合は回転し続けることになります。
回転を制御する処理の中でもかなり直感的に使用することができるので
オブジェクトを回転させたいな~ ➜ 「transform.Rotate」でokです。
また、以前紹介した「transform.Translate」同様
transform.Rotate(rotasionVector * rotateSpeed * Time.deltaTime , Space.World);
Space.Worldを指定してワールド座標で回転させる事も可能です。