Стрейф со стороны камеры с помощью Samsung Gear-VR

У меня проблемы с игровой логикой. Прямо сейчас у меня есть установка, в которой игрок использует новый Samsung Galaxy S8 с гарнитурой Gear-VR и контроллером Gear для исследования окружающей среды. Текущий код настроен так, что игрок может двигаться вперед и назад, используя направление, в которое он смотрит, с помощью контроллера персонажа, и расчет направления, в котором камера смотрит, чтобы двигаться, на основе «сенсорной панели» контроллера.

У меня есть горизонтальная и вертикальная ось (на основе «касания» контроллера), которая изменяется от -1,0 до 1,0 в Vector2.

if (input.y > 0.0f || input.y < 0.0f || input.x > 0.0f || input.x < 0.0f) {
    Vector3 direction = new Vector3(cameraObject.transform.forward.x, 0, cameraObject.transform.forward.z);
    cC.Move(direction * walkSpeed * Time.deltaTime * input.y);
}

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


person Veraduxxz    schedule 02.05.2017    source источник
comment
if (input.y != 0.0f || input.x != 0.0f) { ... } но из кода в скобках я вижу, что вы даже не используете input.x, поэтому оператор if может быть еще короче: if (input.y != 0.0f) { ... }   -  person Nika Kasradze    schedule 02.05.2017


Ответы (1)


Я раньше не использовал ввод контроллера, но предполагаю, что input.x находится влево / вправо, а input.y - вперед / назад, верно?

Я считаю, что ваш персонаж движется только вперед и назад, потому что вы используете только вектор transform.forawrd из cameraObject, который находится только в направлении z и не имеет компонента x.

Попробуйте это (используя transform.forward и transform.right):

cC.Move((cameraObject.transform.forward * input.y + cameraObject.transform.right * input.x) * walkSpeed * Time.deltaTime)
person lockstock    schedule 02.05.2017
comment
Ага. Transform.right было именно тем, что мне было нужно. Я был просто глуп и не думал об этом, пока не просмотрел код, и кто-то сказал это тоже. - person Veraduxxz; 04.05.2017