前提・実現したいこと・問題点
Unityでアクションゲームを制作しております。
敵のHPを減らし、倒した時の処理について、助言をいただければと思います。
プレイヤーの攻撃により、敵のHPを減らし、0になったら消滅するようにしたいのです。
質問①
0になった瞬間には消えず、0以下になった後もう一度攻撃することによって消えるようになってしまっています。
(例)
プレイヤーから受けるダメージ50 敵のHP50
攻撃を実行→敵のHP0(敵オブジェクト健在)→再度攻撃→敵オブジェクト消滅。
質問②
また、プレイヤーから受けるダメージが敵のHPを上回った場合、敵が消滅せずにHPがマイナスになり減り続けてしまうようになっています。
(例)
プレイヤーから受けるダメージ49 敵のHP50
攻撃を実行→敵のHP1→攻撃を実行→敵のHP-48→(攻撃を継続)-97→-146→-195
といった形になってしまっています。
現在の自分の知識ではどこが原因かが分かっておらず、困っています。
修正したいのは、
①に関しては、HPが0になった瞬間に消滅する。
②に関しては、HPが0以下にならないようにする、0以下になるダメージを受けた場合も消滅するようにしたい。
言語はC♯です。
以上の2点について、ご助力いただければ嬉しいです。
よろしくお願いします。
==============================================
C♯
1コード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class EnemyHP : MonoBehaviour 7{ 8 private NightStutes states; 9 private PlayerStates playerstates; 10 11 public GameObject effectPrefab; 12 public AudioClip destroySound; 13 public int enemyHP; 14 15 16 void OnTriggerEnter(Collider other) 17 { 18 19 states = GameObject.Find("knight").GetComponent<NightStutes>(); 20 playerstates = GameObject.Find("主人公").GetComponent<PlayerStates>(); 21 22 enemyHP = states.HP; 23 24 25 // ぶつかった相手に「Attack」というタグ(Tag)がついていたら、 26 if (other.gameObject.CompareTag("Attack")) 27 { 28 29 // 敵のHPをプレイヤーのatk分、減少させる 30 states.HP -= playerstates.atk; 31 32 33 34 // 敵のHPが0になったら敵オブジェクトを破壊する。 35 if (enemyHP == 0) 36 { 37 38 // オブジェクトを破壊する 39 Destroy(transform.root.gameObject); 40 41 42 } 43 44 } 45 46 47 48 Debug.Log(states.HP); 49 } 50}