C++ 直接xc++;摄像机运动
我对directx相当陌生,所以这听起来可能非常基本 我已经开始了一个第一人称游戏,你可以在房间里走动,我所用的语言是C++,我用DirectX帮助我创建游戏。p> 到目前为止,我已经绘制了所有房间的门等,但我有点卡住了如何制作第一人称相机,并允许用户使用键盘上的箭头键前后左右移动 越简单越好,因为我是初学者 谁能帮我解决这个问题,或者给我指出正确的方向C++ 直接xc++;摄像机运动,c++,camera,directx,game-development,C++,Camera,Directx,Game Development,我对directx相当陌生,所以这听起来可能非常基本 我已经开始了一个第一人称游戏,你可以在房间里走动,我所用的语言是C++,我用DirectX帮助我创建游戏。p> 到目前为止,我已经绘制了所有房间的门等,但我有点卡住了如何制作第一人称相机,并允许用户使用键盘上的箭头键前后左右移动 越简单越好,因为我是初学者 谁能帮我解决这个问题,或者给我指出正确的方向 提前感谢我更喜欢OpenGL,所以我无法在技术方面帮助你,我能做的就是给你一个方向 通常,3D相机具有以下功能: 平移-摄像机所在位置(x、y
提前感谢我更喜欢OpenGL,所以我无法在技术方面帮助你,我能做的就是给你一个方向 通常,3D相机具有以下功能: 平移-摄像机所在位置(x、y、z) 旋转-摄像机围绕每个轴的角度 您要做的仅与翻译部分相关:
好了,就这样,希望我帮了你我更喜欢OpenGL,所以我不能在技术方面帮你,我能做的就是给你一个方向 通常,3D相机具有以下功能: 平移-摄像机所在位置(x、y、z) 旋转-摄像机围绕每个轴的角度 您要做的仅与翻译部分相关:
好了,就这样,希望我能帮上忙,网上有很多教程介绍这个话题,所以谷歌肯定会帮你的 至于基本知识:您需要存储您的位置和相机旋转。假设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函数前面的“-”符号在那里,因为您可能想要这种行为,请随意更改它们
至于相机,你必须在帧之间实现鼠标三角。在每一帧中,将鼠标位置与前一帧进行比较。然后通过旋转和观察速度将其相乘,并直接设置为摄影机值
希望这能有所帮助。网络上有很多关于这个主题的教程,所以谷歌肯定会帮助你 至于基本知识:您需要存储您的位置和相机旋转。假设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函数前面的“-”符号在那里,因为您可能想要这种行为,请随意更改它们
至于相机,你必须在帧之间实现鼠标三角。在每一帧中,将鼠标位置与前一帧进行比较。然后通过旋转和观察速度将其相乘,并直接设置为摄影机值
希望这有帮助。你可以从这里开始:你可以从这里开始:谢谢你的帮助:)我要读你发表的文章,看看我进展如何:)谢谢你的帮助:)我要读你发表的文章,看看我进展如何