0
我使用的是XNA的相机类Seabase Alpha,它效果很好,我根本不需要修改它。但是,如果我同时横向拍摄和偏航,它会改变我的拍摄方向,我无法弄清楚如何“锁定”它,使其永远不会滚动。 (类似第一人称射击游戏,它只能扫射,推力,并调整它的俯仰和偏航。)XNA 3D相机滚动
我对调用类代码如下:
if (gamepadState.ThumbSticks.Right.X != 0)
{
// Look Around
camera.Yaw(-gamepadState.ThumbSticks.Right.X);
}
if (gamepadState.ThumbSticks.Right.Y != 0)
{
// Look Around
camera.Pitch(-gamepadState.ThumbSticks.Right.Y);
}
if (gamepadState.ThumbSticks.Left.X != 0)
{
// Move Around
camera.StrafeHorz(-gamepadState.ThumbSticks.Left.X);
}
if (gamepadState.ThumbSticks.Left.Y != 0)
{
// Move Around
camera.Thrust(gamepadState.ThumbSticks.Left.Y);
}
if (gamepadState.Buttons.LeftShoulder == ButtonState.Pressed)
{
camera.StrafeVert(0.2f);
}
if (gamepadState.Buttons.RightShoulder == ButtonState.Pressed)
{
camera.StrafeVert(-0.2f);
}
我试图迫使将相机类中的矢量设置为Vector(0, 0, 1)
和Vector(0, 1, 0)
。将Z设置为1有点帮助,但它仍然能够滚动。
你有没有尝试重新排序你的if语句首先执行循环,然后执行循环?这会导致单帧的旋转与strafe滞后,但我不认为这会影响你的输入,假设你的游戏状态每秒更新至少20次。 – 2013-02-19 18:38:48
可悲的是,这仍然发生:http://i.imgur.com/zPFcT6F.png – 2013-02-19 18:41:11
[Camera3D](https://github.com/Andrusza/PiratesArr/tree/part-3/Pirates/Pirates/Copy% 20%20FirstPersonCamera)这是我的3D相机。 – user1075940 2013-02-19 20:14:13