1

我正在开发基于 box2d 物理的​​启动游戏类型游戏。当主角启动时,他会得到提升或被一些敌人减速。问题是它是如何移动的。当他获得更快的速度时,他正在旋转战利品(非常非常快),我不喜欢它。你可能知道墨西哥卷饼游戏。我想知道主角是如何以如此出色的方式移动的。他有时会旋转,但只是一点点。我知道我可以通过将 isFixedRotation 设置为 true 来关闭旋转,但它看起来很糟糕。我想要旋转,但只有一点。我也想知道对于这样的游戏来说,身体的最佳形状是什么。首先我有一个蹩脚的角色,然后我决定把它做成完美的圆形,但是它像球一样在地板上旋转,所以我回到了这两者之间的东西:圆形,但不是完美的圆形。有人可以告诉我一个让我的角色更逼真(或者更准确地说是看起来更好)的好方法。我需要一些建议!

问候!

4

2 回答 2

1

您可以使用damping参数angularDampinglinearDamping来减慢移动和旋转速度。

阻尼用于降低物体的世界速度。阻尼不同于摩擦,因为摩擦只发生在接触中。阻尼不是摩擦的替代品,这两种效果应该一起使用。

阻尼参数应介于 0 和无穷大之间,0 表示无阻尼,无穷大表示完全阻尼。通常,您将使用 0 到 0.1 之间的阻尼值。我通常不使用线性阻尼,因为它会使物体看起来很飘。

于 2013-11-03T10:03:09.923 回答
0

您可以检查每帧的旋转速度,如果它大于某个量,则“剪辑”它。

例如:

float32 rotVel = body->GetAngularVelocity();
if(rotVel > maxVel)
{
   body->SetAngularVelocity(maxVel);
}
else if(rotVel < -maxVel)
{
   body->SetAngularVelocity(-maxVel);
}

这有帮助吗?

于 2013-11-12T00:45:19.147 回答