Я пытаюсь создать общую игру «Змея», используя Unity, чтобы укрепить мои знания основ C# и Unity.Unity OnTriggerEnter2D CompareTag || CompareTag inconsistency
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить игрока играть в Game Over при столкновении с телом. В настоящее время у меня есть чек столкновения настроить так:
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("Border") || other.gameObject.CompareTag("Body")) //if the player collides with a Border tag or Body tag...
{
//Game Over Sequence
GameOver();
}
else if (other.gameObject.CompareTag("Collectable")) //otherwise if the player collides with a Collectable tag...
{
//Snek needs to grow!
shouldGrow = true;
}
}
Вот картина сборного инспектора змея тела, а также. Я проверил, чтобы тег был установлен в Body.
Граница столкновения работает нормально, и странная часть установки объекта границы с тегом «Body» также работает нормально, так что я не знаю, почему сегменты тела не вызывает Последовательность игры.
Я новичок в программировании, поэтому извиняюсь, если этот вопрос очевиден, но я не понимаю, почему это не работает.
Заранее благодарен!
EDIT: По желанию программиста, вот образ одного из инспекторов Пограничных в:
'||' означает, что если он сталкивается с Border ** или ** Body, оператор if будет true. Поместите 'Debug.Log (« hit »);' перед вызовом функции GameOver(); 'и дайте мне знать, видите ли вы сообщение, когда вы коллайдер с Border или Body. – Programmer
Сообщение появляется при столкновении с границей, а также при столкновении с спрайтом Border при настройке его типа на «Тело» (в качестве дополнительной проверки). Это не ** появляется ** при столкновении с сегментами тела змеи. Кажется, что тег «Body» и оператор If работают корректно, но по какой-то причине сам сборщик не запускает столкновение. Я также дважды проверял объект Snake_Body (Copy) во время выполнения, а на пороге - тег Body, поэтому я все еще потерян. – SolAureus
Единственный способ узнать, верно ли то, что вы сказали, это удалить 'other.gameObject.CompareTag (« Border ») ||' на данный момент и просто проверить для «Body» в это время. Если он все еще не работает, измените свой вопрос, выберите «Граница» в единстве, сделайте снимок экрана и настройки и загрузите его здесь тоже так же, как и для тела. – Programmer