Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задание к лабораторной работе №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, указав таким образом, что скрипт должен уничтожить объект, компонентом которого он является:
Добавим этот скрипт к кубическому объекту, который должен удаляться, с помощью меню компонентов (рис. 25) Теперь после запуска сцены можно убедиться, что добавленный куб при запуске программы сразу пропадает. Рис. 25. Добавление скрипта C# к объектам с помощью меню компонентов
Теперь попробуем уничтожить другой объект с помощью его поиска в среде. Для этого воспользуемся статическим методом Find основного класса GameObject:
// ищем объект с именем Stena и если таковой есть – уничтожаем его Destroy(GameObject.Find(“Stena”));
В случае необходимости уничтожения объекта не сразу, а спустя какое-то время, можно задать значение во 2-ой параметр функции Destroy:
// Теперь уничтожаем стену спустя 2 секунды после загрузки сцены Destroy(GameObject.Find(“Stena”), 2);
|
|||
Последнее изменение этой страницы: 2018-05-10; просмотров: 216. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |