#c# #unity3d
Вопрос:
У меня есть 2 простые капсулы. 1 неподвижен, а другой перемещается на ту же плитку на карте с помощью transform.position.
Обе капсулы имеют капсульные коллайдеры и твердые тела. Я попытался удалить твердое тело, но, насколько я могу судить, функция OnCollisionEnter требует, чтобы работало твердое тело.
Мой сценарий, прикрепленный к обоим из них, является простым:
private void OnCollisionEnter(Collision other)
{
print("Collision Detected! " other.gameObject.name);
}
Я использовал комбинации «Искинематический», «исТриггер», помещая один компонент перед другим, а затем обращая вспять, гарантируя, что сценарий прикреплен к обоим объектам, убедившись, что мой капсульный коллайдер соответствует размеру объекта, и посмотрел на проблемы других людей, чтобы попробовать их шаги по устранению моей проблемы.
Кажется, ничто не вызывает столкновения между 2 капсулами. Это должно быть что-то маленькое, чего мне не хватает.
У меня есть тег на обоих объектах, и я пробовал такие вещи, как if(other.gameObject.tag == "myTag") {...}
, но это тоже не работает для меня.
Кто-нибудь может заметить мою ошибку? Дайте мне знать, если вам нужно увидеть что — нибудь еще-с удовольствием предоставлю изображения или что-нибудь еще, что поможет. Заранее спасибо!
Выше приведена базовая идентичная иерархия обеих капсул с компонентами, прикрепленными к сетке капсулы. У обоих есть родительские пустые объекты, под которыми они размещены. (Которые сами по себе содержат сценарии, но не коллайдер или твердое тело)
Ответ №1:
Ниже infographic
показано, когда будет обнаружено сообщение о столкновении OnCollisionEnter
между двумя объектами. Обоим объектам понадобится какой-то коллайдер, и, скорее всего, понадобится Rigidbody
.
Вы не захотите устанавливать isTrigger
, так как это не заставит его физически реагировать на столкновение, а просто обнаружит, когда произойдет столкновение. Он тоже не позвонит OnCollisionEnter
, но позвонит OnTriggerEnter
. Установка обоих не в качестве триггеров, добавление коллайдера и предоставление их Rigidbodies
должны позволить обнаружить столкновение. Вам также нужно будет прикрепить этот скрипт к одному из объектов, у которых есть коллайдер. Существуют ли другие компоненты на объектах, которые вы используете?
Комментарии:
1. Я добавлю изображения выше в свой пост в качестве правки.
2. В обеих моих капсулах есть коллайдер капсул и коллайдер твердого тела на сетке капсул. Родитель-это пустой игровой объект с парой сценариев, прикрепленных в обоих случаях. Мне не нужна никакая физика, чтобы произойти, или гравитация, или что-то еще… просто простое обнаружение того, что произошло столкновение, чтобы я мог запустить функцию. (В этом случае распечатайте на консоли или даже отладьте. Войдите в консоль только для начала)
3. Как вы и указывали — я установил оба не в качестве триггеров (isTrigger = false), добавил коллайдер и дал обоим жесткое тело с прикрепленным сценарием — я все еще не могу заставить объекты обнаружить столкновение. Я могу создать короткое видео со ссылкой, если это будет полезно?
4. Как бы глупо это ни звучало — сброс Unity устранил проблему. Спасибо — ваш ответ был правильным.