Шрифт:
21. Rigidbody – это механическое свойство объекта, определенное в базовом движке Unity. Другими словами, если назначить этот компонент объекту, то он начнет вести себя в соответствии с механикой абсолютно твердого тела. Запустите сцену еще раз (нажмите Run) и убедитесь, что теперь объект Cube начинает падать вниз.
22. Создадим еще один объект – плоскость (Plane), которая будет ограничивать падение куба за пределы начальной сцены. Для этого выполните действия, которые уже выполнялись при создании объекта Cube, – в верхней части меню выберите GameObject – 3D Object – Plane:
23. После создания плоскости переместим ее немного ниже уровня объекта Cube. Для этого выделите объект Plane в окне Hierarchy (клик левой кнопкой мыши) и в окне Inspector в верхней части установите значения напротив свойства Transform – Position [X:0, Y: -3, Z:0]:
24. Запустите сцену еще раз. Теперь объект куб (Cube) падает на плоскость (Plane) при старте сцены.
25. Теперь добавим немного интерактивности. Откройте скрипт-файл, который мы создали ранее с именем HelloWorld.cs и напишите туда небольшой функционал, который будет уничтожать объект Cube при нажатии клавиши пробел. В программном коде ниже показано содержимое файла HelloWorld.cs, а жирным шрифтом в комментариях показаны новые строки кода, которые нужно ввести дополнительно:
// Start Code
// End Code
Листинг дублируется ниже в виде скриншота из MS Visual Studio.
В листинг были добавлены следующие строки кода:
– создается переменная класса GameObject c именем obj, в которую можно будет поместить объект (как это сделать будет показано далее). Класс GameObject – это встроенный класс Unity, в дальнейшем мы познакомимся с множеством встроенных классов и их методов;
– создается условие if, которое уничтожает объект (Destroy(obj)) при нажатии клавиши Space. При этом используется метод Input.GetKeyUp, который срабатывает, после того как игрок отпустил клавишу. Также есть похожий метод Input.GeyKeyDown, который срабатывает сразу при нажатии клавиши. В качестве эксперимента можете изменить метод на Inputy.GetKeyDown.
26. Вернитесь в среду разработки Unity и снова выберите объект Cube. обратите внимание, что теперь в окне Inspector внутри скрипт-файла HelloWorld.cs появилась новая переменная Obj. Стоит отметить, что если бы мы создали приватную (private) переменную объекта, то в инспекторе мы бы ее не увидели (приватную переменную можно увидеть, если сверху строки public GameObject obj добавить [Serialize.Field]):
27. Новая переменная появилась благодаря тем самым строкам кода, которые мы добавили выше. Теперь, если кликнуть на значок “мишени” рядом с надписью None (Game Object) то можно выбрать любой из существующих на сцене объектов, который будет удаляться при нажатии клавиши пробел. Например, выберите объект Cube:
28. Теперь запустите сцену и проверьте, что она работает следующим образом:
– В окно Console выводится сообщение “Hello World!11!”;
– Куб (Cube) начинает падать;
– Куб падает на плоскость Plane и останавливается;
– При нажатии на клавишу пробел объект Cube удаляется.
29. В качестве эксперимента замените объект Cube на плоскость Plane внутри скрипта Hello World (Script) в окне Inspector:
30. Проверьте, как теперь отрабатывает сцена после запуска. Что происходит при нажатии на клавиши “пробел”? Теперь, при нажатии клавиши, со сцены должна удаляться плоскость Plane.
Выводы
После завершения всех пунктов рекомендуется вернуться в начало раздела и еще раз внимательно просмотреть всю последовательность действий. Попробуйте самостоятельно внести модификации в некоторые пункты на свой выбор. Так вы сможете более детально разобраться в устройстве взаимосвязей между объектами, скрипт-файлами и некоторыми элементами интерфейса Unity. Ниже приведен некоторый список возможных изменений в проекте Unity, который вы можете внести, опираясь на те инструкции, которые были получены в этом разделе: