Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы к экзамену.docx
Скачиваний:
29
Добавлен:
21.06.2022
Размер:
16.83 Mб
Скачать

21. Проект Memory: открытие карты по щелчку. Сценарий. Программная загрузка изображений. Выбор изображения в невидимом компоненте SceneController. Сценарий, реализующий эти методы.

Открытие карты по щелчку

В этом сценарии есть два ключевых дополнения: ссылка на объект в сцене и метод SetActive(), деактивирующий данный объект. Первая часть, то есть ссылка на объект, аналогична тому, что мы делали в предыдущих главах: переменная помечается как сериализованная, а затем объект с вкладки Hierarchy перетаскивается на эту переменную на панели Inspector. После того как ссылка на объект установлена, код начинает влиять на объект сцены.

Вторым ключевым дополнением является команда SetActive. Она деактивирует любой объект GameObject, делая его невидимым. Если теперь перетащить присутствующий в сцене объект card_back на переменную этого сценария на панели Inspector, в процессе игры карта начнет исчезать после щелчка на ней. Исчезновение рубашки откроет лицевую сторону карты; как видите, мы решили еще одну важную для построения игры Memory задачу! Но пока на стол выложена всего одна карта, давайте исправим этот недостаток

Программная загрузка изображений

После сохранения этого сценария на панели Inspector появилась новая переменная, так как она была указана как сериализованная. Перетащите какой-либо спрайт со вкладки Project (выберите одно из лицевых изображений, кроме того, которое уже есть в сцене) и перетащите на ячейку Image. Затем выполните воспроизведение сцены, и вы увидите на карте новое изображение.

У рубашки карты всего два компонента: стандартный компонент Transform, присутствующий у всех объектов сцены, и новый компонент SpriteRenderer. Именно он превращает объект в спрайт и определяет, какой ресурс будет на нем отображаться. Обратите внимание, что первое свойство этого компонента называется Sprite и связано с одним из спрайтов на вкладке Project; этим свойством можно управлять в коде, чем, собственно, и занимается наш сценарий.

Выбор изображения в невидимом компоненте SceneController

Для начала создайте пустой объект GameObject (напоминаю, что нужно выбрать в меню GameObject команду Create Empty). Затем создайте на вкладке Project сценарий SceneController.cs и перетащите этот ресурс на контроллер GameObject. Перед тем как писать код нового сценария, добавьте содержимое следующего листинга в сценарий MemoryCard вместо того, что было в листинге 5.3.

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

Это короткий фрагмент, демонстрирующий принцип управления картами контроллером SceneController.

22. Проект Memory: создание экземпляров карт. Сценарий

23. Проект Memory: перетасовывание карт. Сценарий

24. Проект Memory: сохранение и сравнение открытых карт, скрытие несовпадающих карт. Сценарии

25. Проект Memory: текстовое отображение счета. Добавление к компоненту UIButton метода SendMessage. Скрипт. Вызов метода LoadLevel в сценарии SceneController

26. Игра в стиле JETPACK JOYRIDE в Unity 2D. Создание и настройка проекта. Настройка вкладки Game. Добавление персонажа. Создание скрипта для управления реактивным ранцем

Откройте Unity и создайте новый проект, выбрав File\New Project….Когда откроется окно мастера проекта, нажмите Set(Установить) на вкладке Create new Project (Создать новый проект) чтобы установить каталог для вашего проекта. В поле Save As (Сохранить как) напишите имя проекта - RocketMouse и выберите папку, в которой вы хотите сохранить этот проект. Нажмите Save (Сохранить), когда закончите. Не спешите нажимать на кнопку Create Project(Создать проект). До этого, вам нужно выбрать из списка 2D в поле с надписью Set up defaults for: (Настройка по умолчанию для:). После этого, вы можете смело жать на Create new Project.

Выберите Edit\Project Settings\Editor чтобы открыть настройки редактора в Инспекторе (Inspector). В разделе Default Behavior Mode убедитесь, что Mode установлен в положение 2D, как это показано на скриншоте ниже:

Во вкладке Сцена (Scene view) должен быть включен 2D режим:

Выберите Main Camera в Иерархии и убедитесь, что Projection установлен на Orthographic и его Position(Позиция) установлен на (0,0, -10).

После проверки и регулировки всех параметров создайте папку по имени Scenes в Браузере проекта (Project browser). Перейдите к папке Scenes, которую вы только что создали, и назовите сцену RocketMouse.unity и нажмите кнопку Save (Сохранить).

Настройка вкладки Game (Игра)

Перейдите во вкладку Игра и установите размер окна, в котором мы будем смотреть на нашу игру, равным 1136×640. Если у вас нет опции resolution в списке, создайте ее и назовите iPhone Landscape.

Выберите Main Camera в Иерархии. В инспекторе, внутри компонента Camera, установите Size равным 3.2.

Сохраните сцену.

Добавление персонажа

Импортируем ассеты. Откройте папку Sprites в Браузере проектов и найдите в этой папке спрайт по имени mouse_fly. Перетащите его на сцену. Создадим объект в Иерархии, назвав mouse_fly. Выберите mouse_fly в иерархии и сделайте следующие изменения в Инспекторе:

Измените его название на mouse, поскольку это будет лучше описывать игровой персонаж.

Установите его Position в (0, 0, 0) (вы переместите мышь в конечное положение чуть позже, а сейчас расположим ее прямо в центре экрана, чтобы лучше видеть)

Добавьте компонент Circle Collider 2D, нажав на Add Component в Инспекторе.

Установите Радиус Circle Collider 2D равным 0.5.

Добавьте компонент Rigidbody 2D, кликнув на Add Component (Добавить компонент) и выберите Physics 2D\Rigidbody 2D.

поставьте галку в чекбоксе Fixed Angle внутри компонента Rigidbody 2D.

Создание скрипта для управления реактивным ранцем

Чтобы добавить скрипт к объекту mouse выполните следующие действия:

В Браузере проекта создайте новую папку под названием Scripts, как вы создали папку Scenesраньше. Убедитесь, что эта папка выбрана, так как Unityдобавляет новый скрипт в выбранную папку.

Выберите Assets\Create\C# script в верхнем меню и назовите скрипт MouseController.

Перетащите скрипт MouseController на mouse в Иерархии, чтобы добавить его к объекту игры mouse. Это позволит добавить компонент Script и установить свойства для скрипта MouseController.

public float jetpackForce = 75.0f;

void FixedUpdate () {

bool jetpackActive = Input.GetButton("Fire1");

if (jetpackActive) {

rigidbody2D.AddForce(new Vector2(0, jetpackForce));

}

}

Метод FixedUpdate вызывается Unity через равные промежутки времени, величина которых настраиваема. Весь код, связанный с физикой будет написан в этом методе. В FixedUpdate вы проверяете, нажата ли кнопка Fire1. Эта кнопка определяется по умолчанию в Unity как левая кнопкой мыши, левой клавиша Ctrl на клавиатуре, или просто касанием экрана для сенсорного устройства.

Для глобального изменения силы тяжести выберите Edit\Project Settings\Physics 2D. Это откроет настройки Physics 2D проекта в Инспекторе. Найдите поле Gravity(Гравитация) и установите значение Y равным -15.

27. Игра в стиле JETPACK JOYRIDE в Unity 2D. Добавление пола и потолка. Использование системы частиц в Unity для создания пламени. Создания игрового уровня. Добавлений фона комнаты. Vertex snapping. Сортировка слоев в Unity

Добавление пола и потолка

Выберите GameObject\Create Empty чтобы создать пустой объект. Вы не увидите его на экране прямо сейчас... Выберите GameObject в Иерархии и сделать следующие изменения в Инспекторе:

  1. Переименуйте его в floor.

  2. Установите Position в (0, -3.5, 0).

  3. Установите Scale в (14.4, 1, 1).

  4. Нажмите Add Component(Добавить Компонент) и добавьте компонент Box Collider 2D выбрав Physics 2D\Box Collider 2D.

Таким же способом создается потолок.

Использование системы частиц в Unity для создания пламени

Чтобы добавить систему частицы на сцену выберите GameObject\Create Other\Particle System. Для того, чтобы языки пламени всегда вылетали из ракетного ранца, вам нужно добавить систему частиц, как потомка мыши. В Иерархии перетащите Particle System за mouse, чтобы добавить его как дочерний элемент.

Теперь, когда система частиц перемещается правильно, настроить ее, чтобы она была похожа на пламя, выбрав Particle System в Иерархии и проделав следующие изменении в Инспекторе:

  1. Переименуйте Particle System в jetpackFlames.

  2. Установите Position в (-0.62, -0.33, 0) чтобы переместить его на сопла ранца.

  3. Установите Rotation в (65, 270, 270) чтобы установить направление, в котором частицы будет вылетать.

  4. В Инспекторе, найдите компонент Particle System и установите следующие свойства:

  • Установите Start Lifetime(продолжительность жизни частиц), равной 0.5

  • Установите Start Size (начальный размер частиц) равным 0.3

  • Нажмите на Start Color (начальный цвет частиц) установите Redравным 255Greenравным 135Blueравным 40 и оставить Alpha равной 255. Вы должны получить сочный оранжевый цвет.

  • Разверните раздел Emission и установите Rate(число генерируемых частиц в секунду или в единицу пройденного расстояния системой частиц) равной 300. Убедитесь, что вы не сняли флажок слева от вкладки Emission и отключить ее.

  • Разверните раздел Shape (задает фигуру, определяющую направление распространения частиц). Убедитесь, что Shapeустановлена в Cone(Конус)Angle (Угол) задан равным 12, а Radius (радиус) равен 0.1. Наконец, финальный аккорд - это включение чекбокса Random Direction (Случайное Направление).

Создания игрового уровня

Процесс создания секции комнаты состоит из 3 этапов:

  • Добавляем фон

  • Добавляем пол и потолок

  • Добавляем декоративные элементы (книжная полка, мышкину норку, и так далее)

Добавлений фона комнаты

В Браузере проектов открыть откройте папку Sprites и перетащите спрайт bg_window на сцену. Сейчас вам не нужно заботиться о позиционировании спрайта на сцене. После размещения центральной секции комнаты, необходимо добавить еще несколько секций - одну слева и одну справа от окна. На этот раз мы будем использовать bg спрайт. Найдите его в Браузере проекта и перетащите на сцену два раза. Первый раз слева, а второй раз справа от bg_window.

Vertex snapping

Вы будете использовать Вершинную привязку (Vertex snapping) - функцию Unity, которая позволяет легко позиционировать элементы рядом друг с другом. Чтобы использовать Вершинную привязку, вам просто нужно удерживать клавишу V после выбора, но перед перемещением игрового объекта.

Сортировка слоев в Unity

Для того, чтобы мышонок появится в верхней части фона комнаты, мы воспользуемся функцией под названием Sorting Layer (Слои сортировки). Нам потребуется всего минута, чтобы поместить нашу мышь поверх фона. Выберите mouse в Иерархии и найдите компонент Sprite Renderer (позволяет вам отображать изображения в виде спрайтов(Sprites), чтобы использовать их и в 2D и в 3D сценах) в Инспекторе. Там вы увидите выпадающий список с названием Sorting Layer, в котором, в настоящий момент, установлено значение по умолчанию.

Откройте выпадающий список и вы увидите список сортируемых слоев из тех, что у вас есть. Сейчас там должно быть только Default. Нажмите на Add Sorting Layer…, чтобы добавить слои для сортировки. Это сразу же откроет редактор Tags & Layers (Теги и Слои). Добавьте следующие слои сортировки, нажав кнопку +:

  • Background

  • Decorations

  • Objects

  • Player