您好我正在使用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'方法中
我的假设是这个代码应该把相机放在我的枪后面,当枪(和十字准线)被移动时,相机应该一直在屏幕中央看十字准线,但是在运行它时相机根本没有这样做,并且根本没有用枪或十字准线移动
任何帮助都会非常适合
答案 0 :(得分:0)
出于此目的,我的十字准线只是一个位于枪前的物体,随着枪一起移动
除非“眼睛”直接位于枪管后面(枪将阻挡视线),否则不会起作用 - 如果“眼睛”甚至略高于枪支,你最终会通过十字准线物体看着地面,和视图方向根本不匹配摄像机方向。
处理它的几种方法:
同样在3D射击游戏中,摄像机方向经常被存储为偏航/俯仰/滚动角度组合。