Попробуйте OnCollisionEnter
вместо OnTriggerEnter
. Я заметил, что эти две функции немного непредсказуемы в отношении того, какая из них работает в любой момент времени. У меня обычно есть функция каждого из этих методов, и один или другой всегда ударил.
OnCollisionEnter
очень похож на OnTriggerEnter
. Вот изменение, которое вы должны сделать:
void OnCollisionEnter (Collision other)
{
if(other.gameobject.tag == "Enemy")
{
health = health - 20f;
Debug.Log("hit");
}
}
Чтобы было ясно, это только уменьшит переменную здоровья. Если это должна была быть переменная здоровья зомби, возможно, вам придется немного изменить свой код.
Возможно, вам также придется изменить состояние здоровья на PlayerHealthBar.value
в зависимости от того, где находится этот скрипт, и значение, которое вы на самом деле хотите видеть, изменилось. Я верю, что вы достаточно разбираетесь в коде, чтобы знать, нужно это или нет.
Наконец, убедитесь, что оба объекта имеют коллайдер и твердое тело.