- •1. Преимущества, недостатки Unity. Примеры игр на основе Unity
- •Описание интерфейса главного окна Unity. Вкладка Scene, вкладка Game и панель инструментов.
- •Работа с мышью и клавиатурой. Навигация. Преобразование объектов. Вкладка Hierarchy, Project, Console и панель Inspector
- •4. Поддержка языков программирования в Unity. Сценарии. Компоненты. Методы Start() и Update(). Вывод информации в консоль.
- •5. Планирование трехмерного проекта fps. Трехмерное координатное пространство. Правая и левая системы координат.
- •6. Размещение объектов на трехмерной сцене. Понятие GameObject. Масштабирование объектов.
- •7. Источники света и камеры. Типы осветителей. Коллайдер, типы коллайдеров и точка наблюдения игрока в проекте fps.
- •3.3.3. Слежение за состоянием персонажа
- •14. Увеличение количества врагов: шаблон экземпляров, создание шаблона врага, сценарий SceneController, порождающий экземпляры врагов.
- •3.4.1. Что такое шаблон экземпляров?
- •3.4.2. Создание шаблона врага
- •3.5.1. Шаблон снаряда
- •3.5.2. Стрельба и столкновение с целью
- •3.5.3. Повреждение игрока
- •16. Типы игровых ресурсов. Создание геометрической модели сцены. Назначение геометрической модели. Наложение текстур. Выбор формата файла
- •4.1. Основные сведения о графических ресурсах
- •4.2. Создание геометрической модели сцены
- •4.2.1. Назначение геометрической модели
- •4.3. Наложение текстур
- •4.3.1. Выбор формата файла
- •17. Импорт файла изображения. Назначение текстуры. Создание неба с помощью текстур. Скайбокс. Создание нового материала для скайбокса
- •4.3.2. Импорт файла изображения
- •4.3.3. Назначение текстуры
- •4.4. Создание неба с помощью текстур
- •4.4.1. Что такое скайбокс?
- •4.4.2. Создание нового материала для скайбокса
- •18. Выбор формата файла для экспорта трехмерных моделей. Экспорт и импорт модели.
- •19. Системы частиц. Редактирование параметров эффекта. Новая текстура для пламени. Присоединение эффектов частиц к трехмерным объектам.
- •20. Подготовка проекта Memory. Понятие спрайт. Анимированные спрайты. Переключение камеры в режим 2d. Интерактивные объекты. Создание объекта из спрайтов.
- •21. Проект Memory: открытие карты по щелчку. Сценарий. Программная загрузка изображений. Выбор изображения в невидимом компоненте SceneController. Сценарий, реализующий эти методы.
- •28. Игра в стиле jetpack joyride в Unity 2d. Передвижение мыши вперед (скрипт). Создание бесконечного уровня в Unity: создание префаба, генератор комнат (скрипт).
- •29. Игра в стиле jetpack joyride в Unity 2d. Анимация персонажа: покадровая анимация, создание анимационных переходов, добавление параметров перехода.
- •31. Игра в стиле jetpack joyride в Unity 2d. Добавление лазеров в игру. Скрипт для включения, выключения, переключения и вращения лазеров. Настройка параметров этого скрипта.
- •32. Игра в стиле jetpack joyride в Unity 2d. Реализация скрипта, описывающего смерть мыши. Добавление анимаций Fall и Die, переходы между ними, триггер при смерти мыши.
- •33. Игра в стиле jetpack joyride в Unity 2d. Добавление монет. Использование тегов для различия в игре монет и лазеров. Обновленный скрипт контроллера персонажа.
- •Добавление метода для добавления нового объекта
- •Генерация и удаление объектов
- •Настройка параметров скрипта
- •35. Игра в стиле jetpack joyride в Unity 2d. Скрипт для добавления счётчика монет на экране. Скрипт для отображения кнопки на экране и возможности перезапуска игры.
- •Звук для лазера
- •Звук сбора монет
- •Звуки шагов и реактивного ранца
- •Добавление Audio Sources
- •Переключение между звуком шагов и реактивного ранца
- •Задание переменных сценария «Шаг» и «полет»
Добавление метода для добавления нового объекта
Новые объекты добавляются в методе AddObject аналогично тому, как добавляются комнаты. Добавьте следующие данные в GeneratorScript:
void AddObject(float lastObjectX)
{
//1
int randomIndex = Random.Range(0, availableObjects.Length);
//2
GameObject obj = (GameObject)Instantiate(availableObjects[randomIndex]);
//3
float objectPositionX = lastObjectX + Random.Range(objectsMinDistance, objectsMaxDistance);
float randomY = Random.Range(objectsMinY, objectsMaxY);
obj.transform.position = new Vector3(objectPositionX,randomY,0);
//4
float rotation = Random.Range(objectsMinRotation, objectsMaxRotation);
obj.transform.rotation = Quaternion.Euler(Vector3.forward * rotation);
//5
objects.Add(obj);
}
Благодаря этому методу берется позиция последнего (самого правого) объекта и создается новый объект в случайной позиции в пределах заданного интервала.
Генерация и удаление объектов
Добавьте следующие данные в GeneratorScript:
void GenerateObjectsIfRequired()
{
//1
float playerX = transform.position.x;
float removeObjectsX = playerX - screenWidthInPoints;
float addObjectX = playerX + screenWidthInPoints;
float farthestObjectX = 0;
//2
List<GameObject> objectsToRemove = new List<GameObject>();
foreach (var obj in objects)
{
//3
float objX = obj.transform.position.x;
//4
farthestObjectX = Mathf.Max(farthestObjectX, objX);
//5
if (objX < removeObjectsX)
{
objectsToRemove.Add(obj);
}
}
//6
foreach (var obj in objectsToRemove)
{
objects.Remove(obj);
Destroy(obj);
}
//7
if (farthestObjectX < addObjectX)
{
AddObject(farthestObjectX);
}
}
Чтобы этот метод работал, вам также нужно добавить команду GenerateObjectsIfRequired в пункт GeneratorCheck, который находится немного ниже GenerateRoomIfRequired:
GenerateObjectsIfRequired();
Настройка параметров скрипта
Чтобы заставить GeneratorScript работать, вам нужно установить несколько параметров для него. Вернитесь в Unity и выберите GameObject в окне Hierarchy.
Найдите компонент «Generator Script» в меню Inspector и убедитесь, что папка «Prefabs» открыта в окне Project.
Перетащите префаб coins_v из окна Project в список «Available Objects», который находится в компоненте GeneratorScript. Затем таким же образом перетащите префаб laser из окна Project в список «Available Objects».
35. Игра в стиле jetpack joyride в Unity 2d. Скрипт для добавления счётчика монет на экране. Скрипт для отображения кнопки на экране и возможности перезапуска игры.
Скрипт для добавления счётчика монет на экране
using UnityEngine.UI;// для использования возможностей новой графической системы Unity.
public Text cheeseLabel;// создаём новую переменную
void CollectCheese(Collider2D cheeseCollider)
{
cheese++;
cheeseLabel.text = cheese.ToString();//целое число монет преобразуется в строку и применяется к свойству text элемента Text.
}
Скрипт для отображения кнопки на экране и возможности перезапуска игры
using UnityEngine.SceneManagement;//простсранство имён
public void RestartGame()
{
SceneManager.LoadScene(“RocketMouse”);
}
public Button redtartButton;//новый метод и код в конце метода FixedUpdate, чтобы кнопка перезагрузки отображалась только после того, как игрок умирает
if(isDead && isGrounded)
{
ReatartButton.gameObject.SetActive(true);
}
И создаём кнопку, выбрав GameObject ⇒ UI ⇒ Button. В меню Inspector переименуйте новую кнопку в restartButton.
Текст в кнопке является дочерним элементом кнопки. В меню Hierarchy щелкните треугольник рядом с кнопкой restartButton и выберите элемент Text.(пишем необходимый текст).
Кнопка не должна отображаться в начале игры, поэтому еще раз выберите restartButton в меню Hierarchy и снимите флажок рядом с именем в окне Inspector.
Выберите мышь, чтобы отобразить сценарий «Mouse Controller» в окне Inspector, и перетащите кнопку restartButton из меню Hierarchy на кнопку «Restart Button» в Mouse Controller.
Последний шаг – сообщить кнопке, какой метод выполнять при нажатии. Выберите resetButton в меню Hierarchy и в компоненте Button в окне Inspector найдите On Click (). Нажмите кнопку + и перетащите GameObject из меню Hierarchy в поле None. Нажмите на кнопку No Function и выберите MouseController ⇒ RestartGame ().
Игра в стиле JETPACK JOYRIDE в Unity 2D. Добавление звука в игру. Редактирование скриптов для озвучки действий персонажа. Фоновая музыка.