(プレハブ)複数生成されるオブジェクトのスクリプト変数を個別で起動させるようにしたいです。
プレハブ化しているGameObjectで、アタッチされているスクリプトの(HP)変数を書き換えたいのですが、複数のオブジェクトを生成してから、
複数のオブジェクトが他のオブジェクトと衝突中の間、一番最初に生成されたオブジェクトのスクリプトの(HP)変数に衝突が重複して処理が進みます。(1番、2番、3番、4番、と…、シーン上にオブジェクトが生成された順番にスクリプトの(HP)変数が書き換わる)
複数生成されるオブジェクトのスクリプト変数を個別(1番は1番目に生成されたスクリプト、2番は2番目に生成されたスクリプト)で処理させるようにしたいです。
発生している問題・エラーメッセージ
using
1 2public class EnemyA : MonoBehaviour 3{ 4 GameObject MapTobira; 5 MapTobira script; 6 7 int atkDamege = 10; 8 bool atk = false; 9 10void Update() 11 { 12 MapTobira = GameObject.FindGameObjectWithTag("MapTobira"); 13 script = MapTobira.GetComponent<MapTobira>(); 14 if (atk) 15 { 16 script.Damege(atkDamege); 17 } 18 } 19 20 void OnCollisionStay2D(Collision2D collider) 21 { 22 if (collider.gameObject.tag == "MapTobira") 23 { 24 atk = true; 25 } 26 } 27 void OnCollisionExit2D(Collision2D collider) 28 { 29 if (collider.gameObject.tag == "MapTobira") 30 { 31 atk = false; 32 } 33 } 34}
using UnityEngine; public class MapTobira : MonoBehaviour { private int Hp = 1000; public void Damege(int dame) { this.Hp -= dame; } public int Myhp() { return this.Hp; } void Update() { if (this.Hp <= 0) { Destroy(gameObject); } } }
EnemyAのスクリプトで、MapTobiraのスクリプトで衝突したオブジェクトのHPを削らずに、順に…1番目2番目3番目に設置されたシーン上に存在するプレハブした複数のオブジェクトが「2番目に振れているのに1番目のスクリプトをHPを削っていく」状況です。
これを2番目に衝突しているなら2番目のHPを削りたい状況です。
2日間調べましたがお手上げ状態でしたので、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/13 04:03
2020/10/13 04:14
2020/10/13 04:47