Как стать автором
Обновить

Комментарии 12

Часто они совпадают с формой самого объекта (как в реальном мире), хотя это и не обязательно.

Чаще всего они наоборот не совпадают, ибо объекты обычно сложнее. Цилиндрическая фигура мало похоже на гуманоидную, ну именно она используется для упрощеной колизии людей

Согласен, неточная формулировка. Полный повтор сложных форм сильно бил бы по производительности. Хотя, пожалуй, в наработках начинающих используются довольно простые модели/спрайты и коллайдеры на них довольно простые:)

Вопрос к автору.

В свое время тоже баловался с Юнити и была проблема что при больших скоростях один объект вчеравно проникал в другой.

Вопрос к вам. Что надо сделать чтобы объект с большой скоростью не проникал в другой.

П.с. большая скорость например падающий объект под силой гравитации от компонента юнити с высоты 10м. Если честно я вспомнил что в игре КСП не решили толком эту проблему поэтому у себя я сам прописывал многие взаимодействия

Решения этой проблемы нет ) Все упирается в производительность, особенно на мобильных устройствах.

Ну можно поиграться с частотой вызова FixedUpdate. Приблизить ее к частоте Update, например. Но производительность, да

Проблема распространенная и может иметь несколько причин. Часто новички пытаются реализовать движение не через физическое перемещение (Rigidbody), а напрямую изменяя transform.position. Однако этот способ приемлем, только если нужно "телепортировать" один объект в другое место. При попытке использовать его в физическом перемещении, логично, что объекты могут проходить друг сквозь друга, особенно если их коллайдеры малы (узки).

Если же движение реализовано правильно, может помочь установка поля Collision Detection на Continuous вместо Discrete. С другой стороны, это ударит по производительности в больших проектах. Проблема распространенная, о ней не раз спрашивали и писали.(https://forum.unity.com/threads/what-are-the-necessary-settings-to-prevent-objects-passing-through-each-other-at-high-speeds.384519/)

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

Вот если бы Вы написали свой опыт, описали бы проблемы и пути их решения при использовании этих коллбэков, то, на мой скромный взгляд, было бы куда интереснее.

К примеру, популярная проблема пролета коллайдеров через друг друга...я в свое время пару сотен раз сломал свои мозги в поисках решения....

Хотел написать статью даже, да ленивый слишком и боюсь засмеют ))

ЗЫ: Для хранения проекта пользуйтесь гитом

Так напишите. Я в юнити просто ушёл от многих компонентов и писал все под себя

Например? Какие компоненты Вы заменили своими фичами? Можно на код взглянуть ради интереса?

Спасибо за отзыв и информацию.

Увы, не похоже, что эта тема подробно разъясняется в курсах и туториалах, ибо на том же StackOverflow (как минимум на русском) с завидной регулярностью всплывают вопросы: "Почему коллайдеры не взаимодействуют", "Почему столкновение не обрабатывается", "Почему коллайдеры проходят свозь друг друга". Я даже могу с уверенностью заявить, что помню вопрос "Где и как вызвать функцию OnCollisionEnter?" Сейчас не могу найти - предполагаю, что вопрос закрыли.

Пару лет назад я даже написал там вопрос-ответ с очень краткой информативной справкой и по просмотрам можно понять, что новички сталкиваются с проблемами по теме часто.

Я бы в обязательном порядке добавил, что есть еще Collision action matrix (в самом низу документации): Introduction to collision. Столкновение не всякого коллайдера с другим коллайдером будет обработано, это не совсем очевидно.

Спасибо вам! Для начинающих отличный урок!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории