Персонаж просто так умирает
Есть персонаж, который при прикосновении к врагу теряет хп, есть код
public class PlayerHealthbar : MonoBehaviour
{
[SerializeField] private Image progressImage;
private int currentHP;
private int maxHP;
private float percentHP;
private void OnEnable()
{
EventBus.Instance.PlayerInit += SetStartHP;
EventBus.Instance.PlayerHealed += OnPlayerHealed;
EventBus.Instance.PlayerDamaged += OnTookDamage;
}
private void OnDisable()
{
EventBus.Instance.PlayerHealed -= OnPlayerHealed;
}
private void Awake()
{
progressImage = GetComponent<Image>();
}
private void SetStartHP(int hp)
{
Debug.Log($"player has {hp}");
maxHP = hp;
currentHP = maxHP;
Debug.Log($"cur hp is {currentHP}");
}
private void OnTookDamage(int damage)
{
if(currentHP <= 0) {
Destroy(gameObject);
}
else {
currentHP -= damage;
progressImage.fillAmount -= (float)damage / currentHP;
Debug.Log($"cur hp is {currentHP}");
}
}
private void OnPlayerHealed(int amountOfRecover)
{
currentHP += amountOfRecover;
progressImage.fillAmount += (float)amountOfRecover / currentHP;
Debug.Log($"Player recovered {amountOfRecover}");
Debug.Log($"cur hp is {currentHP}");
}
Проблема заключается в том что персонаж умирает моментально при прикосновении к врагу, при этом дебаги отображают правильно хп, мол оно есть, но перс умер, не могу понять в чем проблема. Вот метод нанесения дамага врагом
private void OnTriggerEnter2D(Collider2D other)
{
if(other.gameObject.tag == "Player")
{
EventBus.Instance.PlayerDamaged?.Invoke(damage);
}
}
Вот состояние риджит бади объектов
Вот логи
Источник: Stack Overflow на русском