前提・実現したいこと
自動スクロールで戦車が進みながら障害物を破壊していくゲームを製作しているが、1回目のプレイヤーと障害物(Building)の当たり判定と同様に、2回目以降の障害物(1回目と同じ性質、コード所持)への当たり判定も機能させたい。
発生している問題・エラーメッセージ
当たり判定をコードで設定し、プレイヤーにドロップした所、1回目の障害物(Building)との衝突は当たり判定が機能して障害物が破壊されるのに、2回目にプレイヤーが、複製した別の同じ障害物と衝突した際にはなぜか当たり判定が機能しなくなってしまった。ぶつかってプレイヤーがそこで止まるようになってしまった。
エラーメッセージ
表示されません
該当のソースコード
C#
1public class PlayerController : MonoBehaviour 2{ 3 GameObject Player; 4 float speed = 3.50f; 5 void Start() 6 { 7 this.Player = GameObject.Find("Building"); 8 this.Player = GameObject.Find("EnemyBullet"); 9 } 10 void Update() 11 { 12 transform.position += new Vector3(this.speed * Time.deltaTime, 0f, 0f); 13 } 14 private void OnCollisionEnter2D(Collision2D collision) 15 { 16 if(collision.gameObject.tag == "Building") 17 { 18 GameObject director = GameObject.Find("GameDirector"); 19 director.GetComponent<GameDirector>().DecreaseHp(); 20 Destroy(collision.gameObject); 21 } 22 }
試したこと
3つの同じ障害物(Building)それぞれにプレイヤーと衝突したら破壊される、というコードを持たせた所、同じ現象が発生し、1つ目にプレイヤーと衝突した障害物は破壊されたが2つ目に衝突した障害物には当たり判定が機能しなかった。Unity本体のRigidlybody2DとBoxCollider2Dに問題があるのかとも考えたがそれも違った。
補足情報(FW/ツールのバージョンなど)
Unity 2019.2.14f1 Personal
回答1件
あなたの回答
tips
プレビュー