我正在创建一个3D飞行游戏并使用DXUTCamera进行观看。
我可以让相机接受角色的位置,但我想在第三人中看到我的角色。
这是第一人称视角的核心
//Put the camera on the object.
D3DXVECTOR3 viewerPos;
D3DXVECTOR3 lookAtThis;
D3DXVECTOR3 up ( 5.0f, 1.0f, 0.0f );
D3DXVECTOR3 newUp;
D3DXMATRIX matView;
//Set the viewer's position to the position of the thing.
viewerPos.x = character->x; viewerPos.y = character->y;
viewerPos.z = character->z;
// Create a new vector for the direction for the viewer to look
character->setUpWorldMatrix();
D3DXVECTOR3 newDir, lookAtPoint;
D3DXVec3TransformCoord(&newDir, &character->initVecDir,
&character->matAllRotations);
// set lookatpoint
D3DXVec3Normalize(&lookAtPoint, &newDir);
lookAtPoint.x += viewerPos.x;
lookAtPoint.y += viewerPos.y;
lookAtPoint.z += viewerPos.z;
g_Camera.SetViewParams(&viewerPos, &lookAtPoint);
那么有没有人有想法如何将相机移动到第三人称视角?优选地定时,以便在相机移动中有平滑的动作。 (我希望我可以编辑这段代码,而不是引入另一个相机类)
答案 0 :(得分:1)
嗯,我相信我可以在理论上帮助你从第一人称视角转变为第三人称视角。对不起,我不能给你实际的代码,但我正在用手机打字。您必须将视图开始后的点放在播放器后面并让lookAtPoint查看播放器。另外,一定要按照第三人的逻辑使x,y和z移动。希望有所帮助。如果它没有任何帮助我很抱歉,但是通过电话打字对我来说有点困难,我无法解释它真的很好。