やりたいこと
mini3のPosYが100になるまでmini1,mini2,mini3を移動させ続けた後、プログラムを停止させたいです。
###問題
PosY100で止まらずに動き続けます。
↑の挙動については解決しました。
が、根本的な解決には至ってないのでタイトルの疑問について教えていただきたいです。
詳しくは下のコメントを見ていただきたいです。
###該当のコード
C#
1public class miniStManager : MonoBehaviour 2{ 3 [SerializeField] GameObject mini1, mini2, mini3; 4 int y; 5 miniStManager miniSt; 6 // Start is called before the first frame update 7 void Start() 8 { 9 miniSt = this; 10 } 11 12 // Update is called once per frame 13 void Update() 14 { 15 if (y <= 100) 16 { 17 mini1.transform.Translate(0.6f, 0.5f, 0f); 18 mini2.transform.Translate(0.3f, 0.5f, 0f); 19 mini3.transform.Translate(0f, 0.5f, 0f); 20 Vector2 pos = mini3.transform.position; 21 pos.y = y; 22 } 23 else 24 { 25 miniSt.enabled = false; 26 } 27 } 28
###コメント
プレイ前のインスペクター上のPosYは0です。
何分始めたばかりでにっちもさっちもわかりません。
ご助言を賜らせてください…
追記:debug.log(y);をvoid updateの中に書いたところ、ずっと0が吐き出されていました。
インスペクター上のPosYの数値は問題なく上がり続けていました。
追追記:debug.logを(y)ではなく(pos.y)にしてifの中に書いたら正常に数値が吐き出されるようになりました。
なぜyで吐き出されなかったのかという問題はさておき、数値を見ると、どうやらインスペクターが指すPosY:100とpos.yの100の定義が大きく乖離しているようだということがわかりました…
このことから、if (y <= 100)をif(pos.y<=0.33f)にすることで一応挙動の解決は致しました。
(0.33fは手探りで見つけたPosY:91になる数値です)
ですが、根本的な解決というか、理屈の理解はできていません…
今度はpos.yの指す位置とは何を基準にしたものか知りたいです。教えてください。
回答2件
あなたの回答
tips
プレビュー