- 締切済み
unityで今プログラムを組んでいます
今prefabで生成した物(クローン)のY座標を配列に入れて その中で現在一番数値の多いものを表示というものを作りたいのですが以下のプログラムだと 現在の高さではなくクリックで生成した物の高さになってしまいます。 理由が分からないのでアドバイスお願いします。 var test : Transform; var foo2 = new Array(); function Update(){ //クリック if (Input.GetButtonDown ("Fire1")) { Instantiate(test, transform.position, transform.rotation);//生成 } } //判定 function OnCollisionEnter(info : Collision) { foo2[i] = this.transform.position.y;//配列代入 //配列の中身調べる for(var A = 0; A <= i; A++){ if(foo2[i] > SavePos_y){ SavePos_y = foo2[i]; Debug.Log(foo2[i]); i++; } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Lchan0211b
- ベストアンサー率61% (573/930)
「for(var A = 0; A <= i; A++){ 」だと、 変数Aがループカウンタで、iがループ最大値になるけど、 ループ内ではfoo2[i]を参照しています。 なにがしたいのかよくわかんないけど、 foo2の配列の中の最大値をSavePos_yに入れる つもりなら、意図通りには動作しないでしょう。 あと、 ・OnCollisionEnter関数を閉じる「}」がない ・変数iやSavePos_yが、OnCollisionEnter関数内で初期化されずに 使用されているのも怪しい