Как изменить мою кнопку при столкновении - PullRequest
0 голосов
/ 08 ноября 2018

Эй, я пытаюсь заставить мою кнопку спрайта перейти с зеленого на красный и обратно, когда мой игрок сталкивается с ней.У меня есть boxcollider2d как триггер и скрипт

скрипт: https://gyazo.com/ec64a2bca5b23526c6949bf18cb50a0d

Я думаю, что это часть этого, но я ничего не получаю, когда сталкиваюсь с кнопкой, может кто-нибудь просветитьменя по этой проблеме очень бы оценили.

Заранее спасибо

1 Ответ

0 голосов
/ 08 ноября 2018

Важно различать разницу между коллайдерами и триггерами.

Коллайдеры используются системой Физики для того, чтобы объекты не проникали и не перекрывали друг друга.С другой стороны, триггеры созданы для того, чтобы вы могли проверить перекрывающиеся области, например, Ring in Sonic.Соник собирает кольца, но они не мешают ему пройти, думайте о них как о триггерах.Если бы они были коллайдерами, sonic запрыгивал бы в них и отскакивал.

В Unity процесс создания триггера такой же, как и при создании коллайдера, с 1 дополнительным шагом, и это помечает флажок.

Также важно знать, какие функции следует использовать в каждом случае.

OnCollision ... Для коллайдеров (или коллайдеров, не отмеченных как триггеры)

OnTrigger... для триггеров, (Маркировка коллайдера в единстве как триггера делает его триггером.)

Чтобы добавить немного больше деталей, также важно использовать правильные типы коллайдера для правильных размеровигра, 2d коллайдеры / триггеры не взаимодействуют с 3d коллайдерами / триггерами.Более того, физические компоненты: 2d твердотельные тела не работают с 3d коллайдерами, а 3d твердотельные тела не работают с 2d коллайдерами / триггерами.

Таким образом, существуют функции для каждого 2d, 3d, столкновения и триггера.

Другим важным фактором является обеспечение того, что если вы хотите использовать эти функции, хотя бы один из объектов должен иметь твердое тело правильного типа (2d или 3d).

Таким образом, проблема, которую вы выполнялив использовал OnCollisionEnter2D для «коллайдера», который был помечен как триггер, в этом случае OnCollisionEnter2D не вызывается, но вызывается OnTriggerEnter2D.

...