Как мне разместить объект на заданном расстоянии перед камерой в проекте трехмерной моноигры? - PullRequest
0 голосов
/ 07 мая 2020

Я работаю над моноигровым проектом, в котором игрок управляет космическим кораблем (от первого лица) и стреляет астероидами, которые появляются в случайных местах со случайной скоростью. Когда я снимаю, я хочу разместить свою пулю на 1,5 единицы прямо перед камерой, независимо от того, где находится камера или в каком направлении она смотрит. Я пробовал эту строку

Vector3 torpedoPos = CameraPosition + CameraDirection * 1.5f;

, как предлагают эти два сообщения: Размещение объектов прямо перед камерой , Размещение объекта перед камерой camera , но как только мое положение будет другим (0, 0, 0), объект будет помещен в одно и то же место независимо от того, в каком направлении я смотрю. В опубликованной мною строке кода torpedoPos - это позиция, в которой я хочу создать свой объект-пулю, CameraPosition - это текущая позиция объекта камеры в трехмерном пространстве, а CameraDirection - это единичный вектор с направлением, в которое направлен объект камеры.

1 Ответ

0 голосов
/ 07 мая 2020

Я решил эту проблему с помощью этой строки кода Vector3 torpedoPos = CameraPosition + Vector3.Transform(Vector3.Forward, Orientation * 1.5f); Ориентация - это матрица, которая определяет направление, в котором смотрит мой корабль. Выполняя преобразование с ориентацией * 1.5 и Vector3.Forward, я получаю сумму, добавляемую к моему текущему положению, которая помещает торпеду прямо перед кораблем.

...