Дважды вызывается OnTriggerEnter

#c# #unity3d #triggers #collider

#c# #unity3d #запускает #коллайдер

Вопрос:

В настоящее время я пытаюсь создать 2D-игру в Unity, и у моего плеера есть коллайдер box в верхней половине и кольцевой коллайдер в нижней половине; это сглаживает наклоны и прочее.

Когда я собираю драгоценный камень, моя функция OnTriggerEnter вызывается дважды из-за обоих моих коллайдеров, если только я не падаю на него сверху или не подскакиваю к нему снизу, поскольку один коллайдер явно касается его раньше другого.

Есть ли способ объединить коллайдеры в одну проверку, чтобы они не перекрывались?

Коллайдеры box и circle

Функция OnTriggerEnter2D

Комментарии:

1. Если вы добавите какой-нибудь ссылочный код, будет полезно быстро проверить.

Ответ №1:

Предполагая, что вы не хотите, чтобы размеры коллайдера Box и Circle различались. Добавьте скрипт в Gem с переменной «isUsed» и при возникновении коллизии установите для него значение true. Так что в следующий раз, если произойдет столкновение, им можно будет пренебречь.

 void OnTriggerEnter2D(Collision2D other)
{
    if(other.gameObject.CompareTag("gem")){
          GemScript gemScript = other.gameObject.GetComponent<GemScript>();
          if(!gemScript.isUsed){
           DO YOU STUFF HERE
           gemScript.isUsed = true;
          }
    }
}