Есть ли 3D-эквивалент для зажима в XNA? - PullRequest
2 голосов
/ 16 ноября 2009

Я строю 3D-игру, но я планирую использовать только 2D-перспективу, поэтому не поворачиваю ось z в уравновешивание, я хочу иметь возможность ограничить движение одной из моих моделей, чтобы она не выходила из неподвижного поля зрения,

когда я проектировал 2D, было просто использовать зажим, но я не могу понять, как это сделать в 3d

любая помощь будет высоко ценится

Привет

Ответы [ 3 ]

1 голос
/ 16 ноября 2009

Если вы просто хотите сделать то же самое, что и 2D-зажим - Vector3.Clamp установите Y (обычно «UP») компонент двух ограничивающих векторов, которые вы передаете, равным 0.

Я немного запутался в вопросе, однако, похоже, что то, что вы ищете, является формой обнаружения столкновений с усеченным видом Эта статья может помочь с этим, если ваша модель может вписаться в Относительно ограничивающей сферы.

Вам понадобится для проверки столкновения со всеми плоскостями, которые определяют пространство обзора. Если вы используете его в качестве перспективной камеры, вам нужно получить Плоскости Frustum , в противном случае, если это орфографическая камера, они являются плоскостями, которые образуют ограничивающий прямоугольник пространства обзора (кубоид, который ориентирован так же, как камера).

1 голос
/ 16 ноября 2009

Просто используйте Vector3.Clamp(Vector3 value1, Vector3 min, Vector3 max) и используйте конструктор в Vector3, который принимает Vector2 и int (для значения z).

0 голосов
/ 16 ноября 2009

Итак, вы хотите в псевдокоде:

if (object.position+movementVec is in view of camera)
   object.position+=movementVec;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...