#c# #unity3d #triggers #collider
#c# #unity3d #запускает #коллайдер
Вопрос:
В настоящее время я пытаюсь создать 2D-игру в Unity, и у моего плеера есть коллайдер box в верхней половине и кольцевой коллайдер в нижней половине; это сглаживает наклоны и прочее.
Когда я собираю драгоценный камень, моя функция OnTriggerEnter вызывается дважды из-за обоих моих коллайдеров, если только я не падаю на него сверху или не подскакиваю к нему снизу, поскольку один коллайдер явно касается его раньше другого.
Есть ли способ объединить коллайдеры в одну проверку, чтобы они не перекрывались?
Комментарии:
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;
}
}
}