transform.positionの座標値を使って、条件分岐をつくってみましょう。
今回の例では、X座標とZ座標のある地点に到達すると、オブジェクトが回転するように制御しました。
関連記事:
transform.positionの値を整数で取得
transform.positionの値を小数第2位で端数処理
座標の小数値を端数処理して条件設定
特定の座標まで行けば跳ね返る
4つの座標で回転して四角形に動く
ある条件になった時だけ実行可能にする(bool型)
transform.positionの整数値で地点を指定
Cubeオブジェクトを用意します。
Cubeオブジェクトを用意し、CubeMove.csを追加しました。
CubeMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float move = 0.1f; public bool zBool = false; public bool xBool = false; void Update() { Vector3 position = new Vector3(0, 0, move); transform.Translate(position); if (Mathf.Floor(this.transform.position.z) == 8) { if (!zBool) { zBool = true; transform.Rotate(new Vector3(0, 50, 0)); } } if (Mathf.Floor(this.transform.position.x) == 10) { if (!xBool) { xBool = true; zBool = false; transform.Rotate(new Vector3(0, 120, 0)); } } if (Mathf.Floor(this.transform.position.z) == -7) { if (!zBool) { zBool = true; xBool = false; transform.Rotate(new Vector3(0, 30, 0)); } } } } |
Mathf.Floorを使い、座標を整数値で取得しています。
また、Updateの中で一回だけ実行させるために、XboolとZboolという2つのフラグを作成しました。
falseに戻すタイミングを後ろにずらすことで、ture → falseの瞬間実行を防いでいます。
ゲームプレイしてみましょう。
Z座標8まで行けば50°回転、X座標10まで行けば120°回転、Z座標-7まで行けば30°回転しました。
関連記事:
transform.positionの値を整数で取得
transform.positionの値を小数第2位で端数処理
座標の小数値を端数処理して条件設定
特定の座標まで行けば跳ね返る
4つの座標で回転して四角形に動く
ある条件になった時だけ実行可能にする(bool型)