OnTriggerEnter Вызов дважды - PullRequest
       12

OnTriggerEnter Вызов дважды

2 голосов
/ 04 апреля 2019

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

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

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

Коробка и круговые коллайдеры

Функция OnTriggerEnter2D

1 Ответ

0 голосов
/ 04 апреля 2019

Предполагая, что вы не хотите, чтобы размеры бокса и коллайдера различались. Добавьте в 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;
          }
    }
}
...