DirectX камера позиционирования для шутера от первого лица - PullRequest
0 голосов
/ 31 марта 2012

Привет, я использую DirectX 10 и C ++, чтобы сделать очень простой шутер от первого лица, просто пистолет и цели, у меня есть пистолет и цель, и пистолет стреляет пулями в правильном направлении и т. Д.

однако я не могу зафиксировать камеру на пистолете и смотреть на перекрестие, для камеры у меня есть это

vecEye.x = g_f_GunX;
vecEye.y = g_f_GunY + 3;
vecEye.z = g_f_GunZ - 5.0;


vecAt.x = g_f_CrossX;
vecAt.y = g_f_CrossY;
vecAt.z = g_f_CrossZ;

g_Camera.SetViewParams( &vecEye, &vecAt );

для этой цели мое перекрестие - это просто объект, который находится перед пистолетом и движется вместе с пистолетом. Я поместил код для камеры в метод onFrameRender

я предполагаю, что этот код должен поместить камеру сразу за моим пистолетом, и когда пистолет (и перекрестие) перемещаются, камера должна постоянно смотреть на перекрестие в центре экрана, однако при его запуске камера вообще этого не делает и вообще не двигается с пистолетом или перекрестием

любая помощь будет очень ценной

1 Ответ

0 голосов
/ 31 марта 2012

для этой цели мое перекрестие - это просто объект, который находится перед пистолетом и движется вместе с пистолетом

Это не сработает, если «глаз» не расположен непосредственно за стволом пистолета (пистолет заблокирует обзор) - если «глаз» будет даже чуть выше пистолета, вы в конечном итоге будете смотреть на землю через объект перекрестия, и направление просмотра вообще не будет соответствовать направлению камеры.

Несколько способов справиться с этим:

  1. Нарисуйте перекрестие в центре экрана в виде 2-й формы, стреляйте пулями из камеры и нарисуйте модель пистолета только для показа. Я думаю, что это был довольно распространенный способ сделать это в «старые времена» (гибель 1 и тому подобное)
  2. Нарисуйте перекрестие в центре экрана в виде 2D фигуры. Создайте датчик обнаружения столкновений (луч), который начинается с положения камеры и указывает в том же направлении, что и камера. Когда пользователь нажимает «огонь», запустите запрос столкновения, используя этот датчик луча, и, если он попадет во что-либо, стреляйте из этой точки. Это единственный реальный способ справиться с прицеливанием, если вы пишете шутер от третьего лица.
  3. Удалите перекрестие и пользовательскую лазерную указку / прицел, чтобы прицелиться в пистолет (может выглядеть круто), стрелять пулями из пистолета. Конечно, луч лазерного указателя должен исходить от пистолета. Это использовалось в нулевой терпимости, avp и нескольких других играх.

Также в 3d-шутерах ориентация камеры часто сохраняется как комбинация углов рыскания / тангажа / крена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...