Уже почти неделю я тестирую Unity для создания игр. Проблема в следующем: у меня есть враг и круг вокруг игрока, у которых есть коллайдер с активным IsTrigger. В коде есть события OnTriggerEnter и OnTriggerExit для противника. Если враг входит в круг игрока, выполняется логическое значение и должны происходить другие вещи. Но происходит только это: враг входит прямо внутрь игрока, и только тогда логическое значение становится истинным (я много раз тестировал его, и вот он), даже если у самого игрока нет коллайдера, только круг вокруг него (игрок есть, конечно, контроллер персонажа, но ведь это не может быть триггером?)
У врага простой ИИ, и он всегда идет в направлении игрока, поэтому, возможно, он срабатывает только тогда, когда он рядом. Потому что это то, что, кажется, происходит. Код здесь:
public GameObject thePlayer;
public GameObject theEnemy;
public float enemySpeed = 0.01f;
public bool attackTrigger = false;
public bool isAttacking = false;
void Update () {
transform.LookAt(thePlayer.transform);
if (attackTrigger == false)
{
enemySpeed = 0.01f;
theEnemy.GetComponent<Animation>().Play("walk");
transform.position = Vector3.MoveTowards(transform.position, thePlayer.transform.position, enemySpeed);
}
if (attackTrigger == true && isAttacking == false)
{
enemySpeed = 0;
theEnemy.GetComponent<Animation>().Play("attack");
StartCoroutine(InflictDamage());
}
}
void OnTriggerEnter()
{
attackTrigger = true;
}
void OnTriggerExit()
{
attackTrigger = false;
}
IEnumerator InflictDamage()
{
isAttacking = true;
yield return new WaitForSeconds(1.1f);
GlobalHealth.currentHealth -= 5;
yield return new WaitForSeconds(0.2f);
isAttacking = false;
}
Этот Кодекс на самом деле принадлежит Джимми Вегасу. Я учусь из его учебника на YouTube, и в его видео он работал нормально. Вот почему я так сбита с толку.
Изменить: враг игнорирует моего игрока. Даже когда я добавляю коллайдер к самому плееру, он не срабатывает. Если у меня отключен IsTrigger от противника, он меня просто глючит. Я не знаю, что это.