子弹物理中的刚体旋转和运动

时间:2014-03-26 00:28:27

标签: c++ opengl-3 bulletphysics

我为玩家制作了一个僵硬的身体,并且一直试图让僵硬的身体随着玩家的控制而移动。

我的意思是,每当我向前推进时,我都希望僵硬的身体朝向玩家所朝向的方向向前移动,同样是向后,向左,向右。到目前为止,我可以使用“施加力”在刚性方向上移动刚体。

我的直接问题是如何在玩家面对的方向上移动玩家的刚体。

其他详情

  • 如果没有必要,我真的不想使用运动体,主要是因为它们现在非常繁琐

  • 我正在使用glfw3作为输入

1 个答案:

答案 0 :(得分:0)

令人惊讶的是,在您真正设法将静态方向的力施加到通过子弹配置的内容之后,您将看不到如何执行此操作。

来吧,你有能力搞清楚。

在这里,只需按下方向(呵呵),下摆。只需采取面向方向的矢量(可以通过相机,第一或第三视图,甚至其他东西确定......) 恭喜,这个向量是k因子的力量。

你也应该根据速度调整这个力,你不需要加速到无限速度,只需先加速很多,然后调节力以达到所需的步行速度。

然后,通过围绕直立轴(最可靠地垂直)旋转面对矢量90度来获得侧向。您可以通过简单地交换组件并乘以-1其中一个来获得它。 x,y,z变为y,-x,z

要向后移动,它在面向矢量上只有-x, -y, -z

因此,您的up密钥并未绑定到0,1,0,而是绑定到facing_dir。这个面向dir可以通过鼠标或其他一些视图控件进行更改,例如数字键2,6,8,4。或者你可以向上,向左,向右,向下移动并使用w,a,s,d像其他人一样,并使用方向键旋转面向方向。 (+小鼠)

从鼠标移动或方向键获取facing向量要比找出如何施加力要困难得多,所以如果你已经有facing向量,我会感到困惑你甚至有问题。