使发射游戏中的物理体更少旋转,更逼真

时间:2013-11-02 18:37:28

标签: box2d corona

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

问候!

2 个答案:

答案 0 :(得分:1)

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

  

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

     

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

答案 1 :(得分:0)

你可以检查每帧的旋转速度,如果它大于一定数量,则“剪辑”它。

例如:

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

这有用吗?