Перейти к содержимому

Как сделать физику в юнити 2д

  • автор:

Физический 2D материал

Physics Material 2D используется для настройки трений и отскакиваний, которые происходят между 2D физическими объектами при их столкновении. Создать 2D физический материал можно через меню Assets ( Assets > Create > Physics Material 2D ).

Свойства

Свойство: Функция:
Friction Коэффициент трения для данного коллайдера.
Bounciness Степень отскока столкновений от поверхности. Значение 1 означает что нет отскока, в то время как значение равное 1 означает хорошую отскакиваемость без дальнейшей потери энергии.

Детали

Для использования 2D физического материала, просто перетащите его на объект к которому привязан 2D коллайдер и перетащите его на компонент коллайдера в инспекторе. Заметьте, что для 3D физики эквивалентный ассет упоминается как Physic Material (т.е. без S в слове physic) — для скриптинга важно, чтобы не возникал конфликт между двумя командами.

Физика

Чтобы физическое поведение было правдоподобной, объект в игре нужно правильно ускорить и задействовать столкновения, гравитацию и другие силы. Встроенный в Unity физические движки обеспечивают вас компонентами для обработки симуляции физики. С помощью настройки всего нескольких параметров, можно создать объекты, которые ведут себя пассивно реалистично (т.е., они будут перемещены в результате столкновений и падений, но не начнут двигаться сами по себе). Управляя физикой из скриптов, вы можете придать объекту динамику автомобиля, машины или даже подвижного куска ткани. На этой странице рассматриваются основные компоненты физики в Unity со ссылками для дальнейшего чтения.

Примечание: На самом деле в Unity есть два отдельных физических движка, один для 3D физики и один для 2D физики. Основные понятия идентичны в обоих движках (за исключением дополнительного измерения в 3D), но они реализованы с разными компонентами. Так, например, существует компонент Rigidbody для 3D физики и аналогичный Rigidbody 2D для 2D физики.

See the Knowledge Base Physics section for troubleshooting, tips and tricks.

Как сделать нормальную физику сталкивания игрока со стенами в unity? [дубликат]

Собственно проблема в том, что персонаж в одном кадре влезает в стену, потом просчитывается физика и его отпружинивает обратно. Пытался двигать и с помошью addforce, и изменяя velocity, и просто через transform.position, и в update и в fixedUpdate. Всё равно. Сейчас сделал костыль. Пуская racast в право, и если расстояние до ближайшего коллайдера после изменения позиции игрока(до отрисовки) слишком маленькое, то есть игрок в стене, то двигаю игрока обратно к краю стены. Работает идеально. Но в реализации куча неприятностей. Основная проблема — лучей придётся пускать по несколько в каждую из 4 сторон. Это довольно запарно. Если есть какой-то более адекватный способ сделать хорошую физику, поставить там какую-то галочку в rigitbody, или всё же я не разобрался, и можно как-то сделать это с обычной физикой unity. Буду очень благодарен, если пришлёте готовый скрипт управления персонажем, где учтены эти тонкости.

Физика мяча для 2D объекта

Сначала для 2D-объекта, например мяча, надо настроить поведение по правилам физики.

Затем выбрать AssetsCreatePhysics Material 2D, после чего будет создан объект.

Unity. Physics Material 2D

Данный объект надо перенести в поле Material для 2D-объекта.

Unity. Rigidbody 2D. Physics Material 2D

И в настройках файла «Physics Material 2D» указать значение Bounciness, которая задаёт высоту «прыгучести» объекта.

Unity. Physics Material 2D. Bounciness

Теперь 2D-объет будет отскакивать от поверхности как мяч.

Обновлено: 29 января 2021

Комментарии

Авторизуйтесь, чтобы добавлять комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *