Задание к лабораторной работе №2




1) Познакомьтесь с особенностями разработки и внедрения скриптов на языке программирования C# в Unity3d.

2) Изучите способы организации взаимодействия трехмерных моделей, как с использованием функций и скриптов Unity3d.

3) Освойте приемы организации взаимодействия объектов за счет столкновений между 3d-объектами на основе прикрепления скрипта на языке программирования C#.

4) Сохраните файл и проекта по п. 3 и представьте преподавателю.

Контрольное задание. Измените скрипт Dialog на языке C# так, чтобы при столкновении куба со стеной происходило разрушение стены. Составить план-отчет по лабораторной работе №2.

Контрольные вопросы.

1. Чем отличаются функции Destroy(gameObject) от Destroy (collision.gameObject)?

2. Какое событие можно отследить с помощью процедуры OnCollisionEnter?

3. Каким образом сделать один объект родителем другого?

 

 

4. Префабы. Копирование и удаление объектов среды в Unity3D. Создание префабов с применением скриптов C#.

 

 

Префаб (Prefabs) – это конструкция подготовленных объектов и компонентов, предназначенная для их многократного использования в проекте. Экземпляр префаба может быть добавлен в любое количество сцен, а также многократно в одну сцену. Все экземпляры являются ссылками на оригинальный префаб и, фактически, его «клонами»; имеют те же свойства и компоненты, что и оригинальный объект.

Префабы полезны, когда нужно создать несколько экземпляров сложного объекта. Альтернативным способом реализации многократного использования объектов и компонентов в проекте является создание новых объектов с помощью скрипта (см. рис. 21):

 

Рис. 21. Простейший скрипт для создания 9 кубических объектов

 

Описанный выше код добавляет объекты без учета их компонентов, таких как, например, Rigidbody. Рассмотрим, каким образом можно создать множество таких кубов с уже добавленными компонентами, используя конструкцию префаба.

Прежде всего, необходимо добавить префаб в проект(Project à Create à Prefab). В результате на панели Project в окне проекта появится префаб с именем «New Prefab »; переименуем его в «UprugostCube ». Обратите внимание, что на данном этапе ссылка на префаб на панели Project отображается серым цветом. Для того чтобы добавить объекты к префабам, достаточно выбрать объект в окне иерархии объектов и перетянуть его на соответствующий префаб («UprugostCube ») на панели Project. Свойства созданного префаба «UprugostCube» описываются на панели инспектора, а его предварительный вид доступен в окне «Preview» (рис. 22).

 

 

Рис. 22. Просмотр свойств префаба в unity3d

 

Для создания пары экземпляров префаба на плоскости, необходимо просто его перетащить. В результате на плоскости появятся два куба, а в окне «иерархии» добавится объект с именем соответствующего префаба «UprugostCube » (рис. 23).

Рис. 23.

Переключившись в режим просмотра «Game» и запустив сцену (рис. 24), можно увидеть, что добавленный куб ведет себя точно так же, как и оригинальный, обладая одинаковыми физическими свойствами.

 

Рис. 24.

Рассмотрим, каким образом можно удалять объекты в Unity3d в скриптах на языке C#. Для этого в окне «Project» создадим новый скрипт с именем «Destroy» и откроем его в редакторе скриптов MonoDevelop.

Как уже говорилось, при создании C#-скрипта Unity создает некий каркас, состоящий из подключенных библиотек и основного класса (используемого скриптом) с методами Start() и Update().

В предыдущих случаях нами рассматривался метод Update, который вызывается каждый раз в новом кадре для каждого компонента всех объектов на сцене.

В данном случае мы воспользуемся методом Start(), который выполняется единожды для каждого компонента сразу после нажатия на кнопку «Play ». и, соответственно, должен использоваться для инициализации переменных и придания им каких-то начальных значений. Добавим в тело метода Start() функцию Destroy() и передадим в нее gameObject, указав таким образом, что скрипт должен уничтожить объект, компонентом которого он является:

// метод Start() выполняется единожды, сразу после окончания загрузки сценыStart() { // уничтожить объект, к которому прикреплен данный скрипт Destroy(gameObject);}

Добавим этот скрипт к кубическому объекту, который должен удаляться, с помощью меню компонентов (рис. 25) Теперь после запуска сцены можно убедиться, что добавленный куб при запуске программы сразу пропадает.

Рис. 25. Добавление скрипта C# к объектам с помощью меню компонентов

 

Теперь попробуем уничтожить другой объект с помощью его поиска в среде. Для этого воспользуемся статическим методом Find основного класса GameObject:

 

// ищем объект с именем Stena и если таковой есть – уничтожаем его

Destroy(GameObject.Find(“Stena”));

 

В случае необходимости уничтожения объекта не сразу, а спустя какое-то время, можно задать значение во 2-ой параметр функции Destroy:

 

// Теперь уничтожаем стену спустя 2 секунды после загрузки сцены

Destroy(GameObject.Find(“Stena”), 2);

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: