前提・実現したいこと
下記のコードでは、敵と衝突した際に"無敵時間"と"ライフを1つ減らす"が実行されます。
しかし、現在のコードでは敵と衝突した後、OnCollisionEnter2Dを用いているため、敵から離れなければ永遠に無敵状態になってしまいます。
衝突し続けている間も無敵時間が終わればライフが減るようなシステムにしたいです。
発生している問題
無敵状態が切れた後も敵から離れない限り無敵状態が続く
該当のソースコード
※必要のないコードは省略させていただいています。
PlayerScript.cs
plivate int health = 3; void OnCollisionEnter2D (Collision2D col) { if (col.gameObject.tag == "Enemy") { tartCoroutine ("Damage"); if(health <= 0) Destroy (gameObject); } } IEnumerator Damage () { gameObject.layer = LayerMask.NameToLayer("PlayerDamage"); //ライフを1減らす実行 if (lifejudge == true){ health--; healthscript.SetPlayerHealthUI (health); lifejudge = false; } //無敵時間 int count = 10; while (count > 0){ renderer.material.color = new Color (1,1,1,0); yield return new WaitForSeconds(0.05f); renderer.material.color = new Color (1,1,1,1); yield return new WaitForSeconds(0.05f); count--; } gameObject.layer = LayerMask.NameToLayer("Player"); lifejudge = true; }
HealthScript.cs
//現在のhealthの値に対応した数のライフ画像を表示するスクリプト
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。