Содержание
Если вы следили за последними тенденциями в разработке игр, вы не могли бы пропустить недавнюю ажиотаж (заслуженно, на мой взгляд) вокруг приложений VR и AR. Мы также подробно говорили об установке и использовании гарнитуры HTC Vive VR на вашем Mac под управлением MacOS High Sierra.
С помощью комплекта разработки eGPU, предлагаемого Apple, или новейшего iMac Pro с мощным графическим процессором AMD Radeon Vega, вы можете создавать и запускать приложения VR непосредственно на подключенной гарнитуре HTC Vive VR. Вот часть 2 о том, как создать и запустить простое приложение VR на MacOS и HTC Vive! Посмотрите на часть 1, чтобы получить скорость!
Это руководство было написано после видео-урока, предоставленного VRGameDev, поэтому обязательно ознакомьтесь с его каналом!
Как сделать руки
Для простоты «руки» в нашем приложении будут двумя простыми сферами, но они смогут использовать триггерные кнопки на контроллере HTC Vive для захвата куба.
- В разделе Иерархия снова выберите Создать> 3D объект> Сфера.
- Выбрать сфера.
- В разделе «Преобразование» измените масштаб на X = 0,1, Y = 0,1 и Z = 0,1.
- Оставьте позицию в X = 0, Y = 0 и Z = 0.
- Выберите Сферу под Иерархией и переименуйте ее в Левая рука.
- Option-Click LeftHand и выберите дублировать.
- Переименуйте дубликат на ** RightHand.
Выберите оба LeftHand и RightHand.
- Под Sphere Collider щелкните снаряжение и Удалить компонент (мы не хотим, чтобы наши руки сталкивались друг с другом в виртуальной реальности).
Как скопировать код C #
Поскольку изучение C # или других языков программирования выходит за рамки этой статьи, мы можем импортировать код, чтобы сообщить нашему приложению, что делать с контроллерами ввода HTC Vive. Вы можете скопировать код здесь в простой текстовый редактор (я использую vi), сохранить его как HandGabbing.cs и, наконец, объединить его с вашим приложением VR.
использование System.Collections;
using System.Collections.Generic;
используя UnityEngine;
используя UnityEngine.XR; // должен быть UnityEngine.VR в версии до 2017.2
публичный класс HandGrabbing: MonoBehaviour
{
открытая строка InputName;
public XRNode NodeType;
public Vector3 ObjectGrabOffset;
публичное плавание GrabDistance = 0.1f;
public string GrabTag = "Grab";
public float ThrowMultiplier = 1.5f;
приватное преобразование _currentObject;
приватный Vector3 _lastFramePosition;
// Используем это для инициализации
void Start ()
{
_currentObject = null;
_lastFramePosition = transform.position;
}
// Обновление вызывается один раз за кадр
void Update ()
{
// обновляем положение и поворот руки
transform.localPosition = InputTracking.GetLocalPosition (NodeType);
transform.localRotation = InputTracking.GetLocalRotation (NodeType);
// если у нас нет активного объекта, посмотрите, есть ли он рядом
if (_currentObject == null)
{
// проверка на наличие коллайдеров
Collider [] colliders = Physics.OverlapSphere (transform.position, GrabDistance);
if (colliders.Length> 0)
{
// если есть коллайдеры, возьмите первый, если мы нажмем кнопку захвата, и у него есть тег для захвата
if (Input.GetAxis (InputName)> = 0.01f коллайдерам [0] .transform.CompareTag (GrabTag))
{
// установить текущий объект на объект, который мы выбрали
_currentObject = colliders [0] .transform;
// если к прикрепленному объекту нет твердого тела, добавьте его
if (_currentObject.GetComponent () == null)
{
_currentObject.gameObject.AddComponent ();
}
// установить кинематический объект захвата (отключить физику)
_currentObject.GetComponent (). isKinematic = true;
}
}
}
еще
// у нас есть объект в руке, обновляем его позицию текущей позицией руки (+ определенное смещение от него)
{
_currentObject.position = transform.position + ObjectGrabOffset;
// если мы отпустим кнопку захвата, освободим текущий объект
if (Input.GetAxis (InputName) < 0.01f)
{
//set grab object to non-kinematic (enable physics)
Rigidbody _objectRGB = _currentObject.GetComponent();
_objectRGB.isKinematic = false;
//calculate the hand's current velocity
Vector3 CurrentVelocity = (transform.position - _lastFramePosition) / Time.deltaTime;
//set the grabbed object's velocity to the current velocity of the hand
_objectRGB.velocity = CurrentVelocity * ThrowMultiplier;
//release the reference
_currentObject = null;
}
}
//save the current position for calculation of velocity in next frame
_lastFramePosition = transform.position;
}
}
Как соотнести руки с устройством ввода
- В верхней строке меню нажмите Правка> Настройки проекта> Ввод.
- Под InputManager Option-Нажмите горизонтальный.
- Выбрать Дублирующий элемент массива.
- Переименуйте новый элемент в TiggerLeft.
- Установить тип на Ось джойстика.
- Установите Ось на 11-я ось (джойстики).
- Вариант-Click TriggerLeft.
- Выбрать Дублирующий элемент массива.
- Переименуйте новый элемент в TiggerRight.
- Установите Ось на 12-я ось (джойстики).
- Option-щелкните пустое пространство под активы.
- Выбрать Импортировать новый актив.
- Выберите HandGrabbing.cs файл, который вы скачали ранее.
- Нажмите Импортировать.
- Выберите оба LeftHand и RightHand под иерархией.
Перетащите сценарий HandGrabbing.cs на Инспектор окно.
- Выберите LeftHand под Иерархия и измените имя входа на TriggerLeft.
- Выбрать Левая рука под типом узла.
- Выберите RightHand под Hierarchy и измените имя входа на TriggerRight.
- Выбрать Правая рука под типом узла.
Как сделать куб интерактивным
Наконец, давайте применим взаимодействие с кубом.
- Выберите куб под иерархией.
- Под Инспектором нажмите падать рядом с тегом.
- Выбрать Добавить метку.
- Нажмите на +.
- Назовите тег грейфер.
- Нажмите Птичий куб под Иерархия.
- Нажмите Тег.
Выбрать грейфер.
Как создать и играть в приложение для виртуальной реальности
Когда все на месте, вы можете нажать кнопку Play и запустить приложение VR в реальном времени.
- нажмите Играть треугольник.
- Выберите разрешение экрана, которое будет работать на HTC Vive (например, 1650 x 1050).
Нажмите Играть!.
Ваше приложение SteamVR должно запуститься, и теперь вы сможете использовать свое приложение в VR. Вы можете взять свой куб и отбросить его на некоторое расстояние! Поздравляем! Вы создали свое первое приложение VR !.
Последние мысли
Это всего лишь пример того, как создать приложение для виртуальной реальности. Надеюсь, у вас будет соблазн сделать это полноценной едой. Игровые движки, такие как Unity и Unreal, позволяют начинающим разработчикам игр быть в курсе событий и начинать создавать удивительные VR-игры. Чего же ты ждешь?! Расскажите нам, что вы будете разрабатывать в VR на MacOS?
Оцените статью!
Отправляя сообщение, Вы разрешаете сбор и обработку персональных данных. Политика конфиденциальности.