Коллайдер не рабочая проблема при уменьшении здоровья игрока - PullRequest
0 голосов
/ 02 мая 2018

когда зомби переходит в атакующее состояние, здоровье начинает уменьшаться. Я хочу изменить код на тот, когда он сталкивается с моим FPS, здоровье ухудшается.

if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
{
    PlayerHealthBar.value -= 2;
    Debug.Log("Hit");
    //anim.SetBool("isAttacking", false);

} 

для Collide я использовал scirpt коллайдера, это .....

void OnTriggerEnter(Collider other)
{
    if(other.tag == "Enemy")
    {
        health = health - 20f;
        Debug.Log("hit");
    }
}

Но это также не работает, что мне теперь делать.

1 Ответ

0 голосов
/ 02 мая 2018

Попробуйте OnCollisionEnter вместо OnTriggerEnter. Я заметил, что эти две функции немного непредсказуемы в отношении того, какая из них работает в любой момент времени. У меня обычно есть функция каждого из этих методов, и один или другой всегда ударил.

OnCollisionEnter очень похож на OnTriggerEnter. Вот изменение, которое вы должны сделать:

void OnCollisionEnter (Collision other)
{
    if(other.gameobject.tag == "Enemy")
   {
        health = health - 20f;
        Debug.Log("hit");
    }
}

Чтобы было ясно, это только уменьшит переменную здоровья. Если это должна была быть переменная здоровья зомби, возможно, вам придется немного изменить свой код.

Возможно, вам также придется изменить состояние здоровья на PlayerHealthBar.value в зависимости от того, где находится этот скрипт, и значение, которое вы на самом деле хотите видеть, изменилось. Я верю, что вы достаточно разбираетесь в коде, чтобы знать, нужно это или нет.

Наконец, убедитесь, что оба объекта имеют коллайдер и твердое тело.

...