我是 directx 的新手,所以这听起来很基础。
我已经开始开发一款第一人称游戏,您可以在其中穿行房间,我使用的编码语言是 c++,并且我正在使用 directx 来帮助我创建游戏。
到目前为止,我已经绘制了所有带有门等的房间,但我有点卡住如何制作第一人称相机并允许用户使用键盘上的箭头键向前、向后和左右移动。
我是初学者,越简单越好。
谁能帮我解决这个问题或指出正确的方向?
提前致谢
最佳答案
网络上有很多关于这个主题的教程,因此 Google 一定会帮助您。
至于基础知识:您需要存储您的位置和相机旋转。假设 Z 是您的上轴,您应该使用箭头仅更改 X 和 Y。
我们还可以说,您将存储的相机方向存储为沿 Z 轴(移动方向)和 X 轴(上下看)的旋转组合。
简单类:
class Player
{
protected:
float3 Position; // Z-up
float2 CameraRotation; // X for turning, Y for up-down
public:
void MoveForward()
{
Position.X += -cosf(CameraRotation.X) * PLAYER_SPEED;
Position.Y += -sinf(CameraRotation.X) * PLAYER_SPEED;
}
// when using any other arrow, just add a multiply of PI/2 to the camera rotation
// PI for backwards, +PI/2 for left strafe and -PI/2 for right strafe.
// If you don't want to use mouse, use left and right arrow to modify camera rotation
// and MoveForward and Backward will look the same, having different signs.
};
sinf 和 cosf 函数前面的“-”符号在那里,因为您可能会想要这种行为,请随意更改它们。
至于相机,您必须在帧之间实现鼠标增量。在每一帧中,将鼠标位置与前一帧进行比较。然后将其乘以转弯和注视速度并直接设置为相机值。
希望这对您有所帮助。
关于c++ - directx c++ 相机运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042365/