あらかじめ指定した4つの座標で回転し、オブジェクトを四角形に動かしましょう。
Cubeがずっと動いていきますが、ある地点まで90度回転します。
関連記事:
3地点で方向転換しながら移動し続ける
Updateを使わずに特定の座標まで移動
特定の座標で移動を止める
座標を整数に変換して条件分岐
Updateの中で1回だけ実行する
右回転と左回転をくり返す
対象オブジェクトを中心に90度ずつ方向転換
ある地点に来ると90度回転
Cubeを作成し、X座標を-5にします。
SquareMove.csを作成し、Cubeに追加します。
SquareMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SquareMove : MonoBehaviour { private float move = 0.1f; private bool zBool = false; private bool xBool = false; void Update() { transform.Translate(new Vector3(0, 0, move)); if (Mathf.Floor(this.transform.position.z) == 5) { if (!zBool) { xBool = true; zBool = true; transform.Rotate(new Vector3(0, 90, 0)); } } if (Mathf.Floor(this.transform.position.x) == 5) { if (xBool) { xBool = false; zBool = true; transform.Rotate(new Vector3(0, 90, 0)); } } if (Mathf.Floor(this.transform.position.z) == -6) { if (zBool) { xBool = false; zBool = false; transform.Rotate(new Vector3(0, 90, 0)); } } if (Mathf.Floor(this.transform.position.x) == -6) { if (!xBool) { xBool = true; zBool = false; transform.Rotate(new Vector3(0, 90, 0)); } } } } |
ゲームプレイしてみましょう。
X座標、Y座標それぞれの地点で、90°回転します。
Mathf.Floorは少数切り捨ての関数。
Mathf.Floor(5.1f) は「5」になりますが、Mathf.Floor(-5.1f)といったマイナス値は「-6」になります。
なので、マイナスでの座標設定では、「-6」を入れています。
関連記事:
3地点で方向転換しながら移動し続ける
Updateを使わずに特定の座標まで移動
特定の座標で移動を止める
座標を整数に変換して条件分岐
Updateの中で1回だけ実行する
右回転と左回転をくり返す
対象オブジェクトを中心に90度ずつ方向転換