Unityで2D横スクロールアクションを製作しているのですが、
「敵に当たったら表示されているHPアイコンを1つ減らす」という処理が上手くいかず、
現在「敵に当たったら表示されているHPアイコンが2つ減ってしまう」という状態になっています。
サイト等を調べたのですが、該当するものが無かったので質問させていただきました。
以下、オブジェクトにアタッチしているスクリプトのソースコードになります。
(PlayerのオブジェクトにアタッチしているためHP関連の部分のみ記載しています、わかりにくければ全文載せなおします。)
お手数ですが添削やアドバイス等よろしくお願いいたします。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityStandardAssets.CrossPlatformInput; 5 6public class Player : MonoBehaviour 7{ 8 private Renderer renderer; 9 public GameObject[] life; 10 public int destroyCount = 0; 11 12 //~中略~ 13 14 void OnCollisionEnter2D (Collision2D col) 15 { 16 //敵との当たり判定 17 if (col.gameObject.tag == "Enemy") 18 { 19 destroyCount += 1; 20 Updatelife(); 21 StartCoroutine("Damage"); 22 23 } 24 } 25 26 void Updatelife(){ 27 28 //ライフ(HP) 29 for(int i = 0; i < life.Length; i++) 30 { 31 if( destroyCount <= i ) 32 { 33 life[i].SetActive(true); 34 } else 35 { 36 life[i].SetActive(false); 37 } 38 } 39 40 41 } 42 43 IEnumerator Damage () 44 { 45 //ダメージ時の無敵処理 46 gameObject.layer = LayerMask.NameToLayer("PlayerDamage"); 47 int count = 10; 48 while (count > 0){ 49 renderer.material.color = new Color (1,1,1,0); 50 yield return new WaitForSeconds(0.05f); 51 renderer.material.color = new Color (1,1,1,1); 52 yield return new WaitForSeconds(0.05f); 53 count--; 54 } 55 gameObject.layer = LayerMask.NameToLayer("Player"); 56 } 57} 58
回答1件
あなたの回答
tips
プレビュー