いつもお世話になっています。
今回はUnity3Dについて伺います。
現在落ちゲームを作っているのですが、衝突判定とメソッドが上手くかみ合いません。
というのも、ブロックが下に落ちるメソッドを作り、壁にブロックが衝突した時点でそのメソッドを終わらせたいと思い、
flagがfalseの時、メソッド内で処理を繰り返し行い、ブロックが壁に衝突した時点でflagをtrueにして処理を終わらせる、という手を取ろうと思ったのですが、OnCollisionEnter内ではflagはtrueになるものの、メソッド内ではfalseのままなのです。
説明ではわかり難いと思いますが、原因のわかる方、どうぞご教授いただけませんでしょうか。よろしくお願いいたします。
C#
1Class A 2mBlock [0].FallBlock (block); 3 4 5Class B 6bool flag = false; 7 8public void FallBlock(Block block){ 9 //flagがfalseの間はブロックが落ちる 10 while(flag == false){ 11 //ブロックが落ちる処理 12 Vector3 blockPos = block.transform.position; 13 blockPos -= -1; 14 block.transform.position = blockPos; 15 } 16} 17 18private void OnCollisionEnter(Collision collision){ 19 //壁に衝突したらflagをtrueにする 20 if(collision.gameObject.tag == "Wall"){ 21 flag = true; 22 } 23} 24 25
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/27 06:15