以前の記事では、transform.positionを整数に変換して条件指定を行いました。
今回は、小数第2位に丸めた値で、if文による条件を設定してみましょう。
transform.positionによる移動の際、少数以下の端数が出ては、条件の設定がうまくいきません。
小数第2位までの値で取得すれば、以下のように、Positonでの条件指定が可能となります。
関連記事:
特定の座標まで行けば跳ね返る
座標を整数に変換して条件分岐
transform.positionの値を整数で取得
transform.positionの値を小数第2位で端数処理
小数第2位までの数値をfloat型で作る
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 46 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float move = 0.05f; public bool zBool = false; public bool xBool = false; void Update() { Vector3 position = new Vector3(0, 0, move); transform.Translate(position); Debug.Log(float.Parse(this.transform.position.z.ToString("f2"))); if (float.Parse(this.transform.position.z.ToString("f2")) == 5.25f) { if (!zBool) { zBool = true; transform.Rotate(new Vector3(0, 70, 0)); } } if (float.Parse(this.transform.position.x.ToString("f2")) == 8.5f) { if (!xBool) { xBool = true; zBool = false; transform.Rotate(new Vector3(0, 135, 0)); } } if (float.Parse(this.transform.position.z.ToString("f2")) == -6.45f) { if (!zBool) { zBool = true; xBool = false; transform.Rotate(new Vector3(0, 30, 0)); } } } } |
float.Parseを使えば、少数以下の端数処理が可能になります。
ToString("f2")では、positionの値を小数第2位で丸めて、文字列に変換。
0.05ずつ移動しているため、if文による座標指定には0.05で割り切れる数値を入れましょう。
ゲームプレイして、動きを確認します。
if文を使って、座標による条件分岐が出来ました。
Updateの中で一回だけ実行させるために、XboolとZboolという2つのフラグを作成しています。
関連記事:
特定の座標まで行けば跳ね返る
座標を整数に変換して条件分岐
transform.positionの値を整数で取得
transform.positionの値を小数第2位で端数処理
小数第2位までの数値をfloat型で作る