Здравствуйте! В этом уроке мы почерпнём знания о физических объектах в Unity 3D. Как
известно, движок обладает встроенной физикой от Ageia, что уже
гарантирует высокое качество взаимодействия объектов. Итак, давайте
разбираться. Основные физические свойства находятся в меню Component
-> Physics. Там мы можем наблюдать Rigidbody, Character controller, Box\Sphere\Capsule\Mesh\Wheel\Raycast Collider, разнообразныеJoints(так называемые джойнты, о них в другой раз) иConstant force. Rigidbody(дословно
- твёрдое тело) отвечает за гравитацию, массу тела, его подвижность и
возможность вращения. Все параметры изменяемы в окне Inspector при выделенном объекте.Freeze rotationи Is kinematic мы рассматривать в этом уроке не будем, они попросту не пригодятся.Box\Sphere\Capsule\Mesh\Wheel\Raycast Collider
отвечают за границы объекта, то есть его попросту говоря форму.
Несложно догадаться, что у сферы будет SphereCollider, у куба
BoxCollider и так далее. Inspector позволяет
контролировать размеры фрм и придавать им материалы (интересный
параметр, позволяет задать физические свойства металла, дерева, льда и
т.д.).Jointsтребует
наличия нескольких объектов и связывает их друг с другом, а также
приклаывает к ним силы (в уроке №4). Последний параметр Constant forceпозволяет
приложить силу к отдельному объекту по разным осям - X, Y и Z. Можно
настроить трение, ускорение и прочие страшные слова из учебника физики
10 класса средней школы.Собственно, вне скриптов это все физические свойства. Пока всё свежо и не забылось, давайте перейдём к практике. 1. Создайте пустую сцену, примените к ней Скайбокс.
2. Опираясь на опыт прошлого урока, создайте сначала куб, а из него - землю путём масштабирования.
3.
Примените текстуру к нашей земле, так будет нагляднее. Теперь немного
нового: заходите в GameObject -> Create Other -> Sphere. Путём
инструментов масштабирования\перемещения\вращения добейтесь положения
сферы над нашей "землёй". Выделите сферу, нажмите Component ->
Physics -> Rigidbody. В Inspector появятся новые параметры: нам
сейчас нужны Mass и UseGravity. Поставьте параметр Mass значение 100,
не убирайте галочку с UseGravity. Далее в том же Inspector выберите
вкладку SphereCollider, найдите строку Material и задайте материал
Bouncy. Сейчас этими действиями мы сделали массу нашей сферы равную 100
единицам, присвоили ей гравитацию и сделали прыгучей, то есть при
столкновении сфера отскочит подобно мячу. Для наглядности присвойте
нашей сфере текстуру. Далее
небольшой совет: для того, чтобы наша сцена была более красивой,
добавим свет. В GameObject -> Create Other выберите PointLight. Он
появится на сцене, в Inspector будут отображаться его параметры.
Поставьте значение Intensity = 3, Range = 200. Остальные параметры пока
трогать не будем. Поместите свет под нашу сферу:
Всё, можно запускать сцену и наблюдать, как сфера сначала упадёт на землю, а потом отскочит. Первый успех! 4.
Можно немного усовершенствовать нашу сцену, добавить ещё парочку
объектов. Создадите Cube, примените к нему Rigidbody, поставьте массу в
99 единиц, масштабируйте и поместите над сферой:
Запускайте
сцену. Куб ударится о серу, и они разлетятся. Однако куб, ударившись о
землю, потеряет энергию, а сфера продолжит прыгать. Разные материалы. 5.
Напоследок рассмотрим Constant Force. Создайте, к примеру, цилиндр (по
тому же алгоритму), масштабируйте его и поместите где-нибудь на сцене,
но так, чтобы он попал в поле зрения камеры. Примените к нему
ConstantForce, поставьте параметр X = 1 (или больше).Поставьте
UseGravity = 0 (снимите галочку) Запустите сцену: Запустите сцену и наблюдайте, как цилиндр проплывает мимо мирно и спокойно.
Сохраните сцену. На этом наш второй урок окончен. Поздравляю, мы узнали об основах физики в Unity 3D! До новых встреч.