DirectX相机定位(第三人称视角)

时间:2012-08-18 16:28:29

标签: c++ directx-10

我正在创建一个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);

那么有没有人有想法如何将相机移动到第三人称视角?优选地定时,以便在相机移动中有平滑的动作。 (我希望我可以编辑这段代码,而不是引入另一个相机类)

1 个答案:

答案 0 :(得分:1)

嗯,我相信我可以在理论上帮助你从第一人称视角转变为第三人称视角。对不起,我不能给你实际的代码,但我正在用手机打字。您必须将视图开始后的点放在播放器后面并让lookAtPoint查看播放器。另外,一定要按照第三人的逻辑使x,y和z移动。希望有所帮助。如果它没有任何帮助我很抱歉,但是通过电话打字对我来说有点困难,我无法解释它真的很好。