我正在使用Box2D来模拟在行星上行走的人。我计算了一个朝向行星中心的自定义重力,除了一个小故障外,它一直在正常工作:我正在使用的盒子作为当前人体的物理模型,它随行星旋转而旋转。我希望它始终是正确的方法。您如何建议我这样做?

我已经考虑过要在人的脚接触地面时获取重力 vector 并计算切向 vector ,但是我不确定如何做到这一点。如果这是最好的方法,请您说明如何实现?有没有更简单的方法?

最佳答案

有一种更简单的方法。

我假设“正确向上”是指脚应始终指向地球。

请执行下列操作:

  • 在与您的星球相同的位置上放置一个额外的圆形物体(基本上是一个小圆圈,位于您的星球“内部”)。该物体既不应该与您的星球也不与您的玩家碰撞。
  • 通过旋转关节将该物体连接到您的星球,使其保持固定在同一位置但可以旋转。
  • 通过一个棱柱形关节将玩家连接到该 body ,根据玩家相对于行星的起始位置设置轴(例如,如果玩家从行星上方开始,则将轴设置为(0,1))。

  • 如果这样做,棱柱形关节应注意使播放器保持所需的旋转方向。

    如果您喜欢手动设置角度,我认为您可以使用atan2这样计算角度:



    但是,这将以度为单位计算角度。您必须将其转换为弧度才能在Box2D中使用。

    关于c++ - 将物体正确放置在行星表面上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23790508/

    10-09 06:23