В этом уроке мы научимся управлять объектом (Трампом) за пределами маркера и скомпилируем игру для реального устройства. Код и домашнее задание доступны на сайте itproger.com (ссылка в описании).
Управление объектом с помощью джойстика
Для управления объектом на устройстве используем джойстик. Импортируем пакет Cross Platform Input:
- Assets > Import Package > Cross Platform Input
- Добавьте весь пакет в проект.
Далее, импортируем элементы управления:
- Standard Assets > Cross Platform Input > Mobile > Mobile Single Stick Control
- Добавьте Mobile Single Stick Control в проект.
- Удалите кнопку прыжка (анимация прыжка отсутствует).
- Увеличьте размеры джойстика (Mobile Joystick) вдвое.
- Установите Movement Range равным 50.
Добавим компоненты к объекту «Трамп»:
- Добавьте компонент Rigidbody.
- Снимите галочку Use Gravity (чтобы Трамп не проваливался сквозь маркер).
- Добавьте новый C# скрипт (например, TrumpController).
Скрипт TrumpController
Откройте скрипт TrumpController в MonoDevelop или Visual Studio. Удалите ненужные библиотеки и подключите:
using UnityStandardAssets;
using UnityStandardAssets.CrossPlatformInput;
Создадим переменные:
private Rigidbody RB;
[SerializeField] private float Speed = 4f;
В методе Start:
RB = GetComponent<Rigidbody>();
Добавим обработку джойстика:
float x = CrossPlatformInputManager.GetAxis("Horizontal");
float y = CrossPlatformInputManager.GetAxis("Vertical");
Vector3 movement = new Vector3(x, 0, y);
RB.velocity = movement * Speed;
Чтобы Трамп смотрел в направлении движения:
if (x != 0 || y != 0) {
transform.eulerAngles = new Vector3(0, Mathf.Atan2(x, y) * Mathf.Rad2Deg, 0);
}
Настройка анимаций и их интеграция в скрипт
- В папке с анимациями Трампа измените тип анимации (Animation Type) на Legacy для анимаций «стояния» и «хождения».
- Переименуйте анимацию «стояния» в Idle и установите Wrap Mode в Loop.
- Переименуйте анимацию «хождения» в Walk и установите Wrap Mode в Loop.
- На объекте «Трамп» в поле Animations укажите анимации Idle и Walk.
Добавим в скрипт TrumpController переменную для анимации и обработку анимаций:
private Animation anim;
// В методе Start:
anim = GetComponent<Animation>();
// Добавляем проверку и воспроизведение анимаций:
if (x != 0 || y != 0) {
anim.Play("Walk");
} else {
anim.Play("Idle");
}
Компиляция игры
Компиляция проекта — важный этап. Для Android:
- В Unity Preferences (Edit > Preferences > External Tools) убедитесь, что установлены Android SDK и JDK.
- В Player Settings (Edit > Project Settings > Player) в Other Settings установите Bundle Identifier (например, com.yourcompany.yourgame). Важно: без пробелов.
- Нажмите Build для создания APK файла.
Для iOS: необходим Xcode. Установите Bundle Identifier в Player Settings. Нажмите Build и запустите полученный проект в Xcode.
Мы создали простую, но забавную игру с дополненной реальностью. На основе полученных знаний можно создавать более сложные проекты, например, добавляя новые функции, такие как изменение скорости движения Трампа.