Триггер Unity не работает - PullRequest
0 голосов
/ 05 июня 2018

Я сделал много коллайдеров ранее, и я использовал (коллайдер другой OnTriggerEnter(collider other)), а затем проверил, является ли другой коллайдер тем, который мне нужен, сравнив TAG .Но на этот раз я не вызываю булево значение canMelee.Мой код:

ArrayList Enemy;
public StatData stat;

[SerializeField]
private bool canMelee = false;

/// <summary>
/// OnTriggerEnter is called when the Collider other enters the trigger.
/// </summary>
/// <param name="other">The other Collider involved in this collision.</param>
void OnTriggerEnter(Collider col)
{
    if (col.tag == "Enemy")
    {
        Debug.Log("Now you can do melee attack!");
        canMelee = true;
    }
}

Итак, я написал этот код, но почему-то он не работает, я проверил тег и добавил его к игровому объекту игрока, но он по-прежнему не работает.

Я попытался добавить еще одну отладку, чтобы проверить, происходит ли OnTriggerEnter () чуть выше ветви if: Debug.Log("Triggered");, и она срабатывает.

Я не могу просто понять, что не так.Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Первый совет, который я могу вам дать, это ВСЕГДА, когда вы пишете код Debug, просто убедитесь, что каждый шаг в вашем коде выполняется.Внутри каждого, если просто отладить то, что он должен проверять, и, если оно истинно, в вашем пустоте, убедитесь, что он запускает пустоту, и т.д ...

Далее: -Проверьте, помечен ли ваш объект как "Враг".", это может быть одной из самых распространенных ошибок, и ее так легко решить, что вы, возможно, написали ее неправильно или просто не настроили ее.- Вот триггерная документация документация .-После этого убедитесь, что ваш gameobject является рыночным как triggered.

-Если вы хотите, вы также можете использовать коллайдеры , и это также показывает вам, как проверить тег.

Убедитесь, что вы настроили все это, если это вам не помогло, прокомментируйте ниже, с отпечатками, вашими игровыми объектами, кодами и т. Д., Связанными с этим.

0 голосов
/ 05 июня 2018

Сначала дважды проверьте, чтобы у ваших вражеских игровых объектов был тег «Враг».Затем убедитесь, что в вашем коллайдере есть опция «Is Trigger», выбранная в Инспекторе Unity.

Затем попробуйте использовать col.gameObject.CompareTag("Enemy") вместо: col.tag == "Enemy" в вашем операторе if.

Ознакомьтесь также с документацией Unity на коллайдерах: Документация Unity Collider Метод Unity Component.CompareTag с примером

Надеюсь, это поможет!

...