让角色围绕圈子移动

时间:2011-06-20 05:09:07

标签: java box2d game-physics trigonometry

所以我有一个2d游戏,通常只有重力和“平坦”的水平,但是我已经添加了具有自身重力的“行星”。

我有一个名为addForce(float xForce,float yForce)的函数,用于移动我的角色。所以说如果我调用了player.addForce(1,-1);玩家会向上移动并向右移动(虽然稍微)。这在具有规则向下重力的水平上工作正常,但是对于行星而言并非如此。 还有另一个名为earthAngle的浮点数:

  

atan2(player.getY() - earth.getY(),player.getX() - earth.getX());

我对行星上的跳跃码所做的是:

  

player.addForce(cos(earthAngle)* 1500,sin(earthAngle)* 1500);

运作良好。然而,我被困在如何让角色在地球上行走。

目前我有以下动作代码:

  

player.addForce(25 * x_ * cos(earthAngle),25 + x_ * sin(earthAngle));

仅适用于某些部件并且在底部反向工作以及在某些部件上更强/更弱,x_可以是-1(左)或1(右)。我猜它们是一个非常优雅的解决方案,我只是在俯视。感谢。

1 个答案:

答案 0 :(得分:3)

由于你已经拥有从行星中心到玩家的矢量,例如(x,y),你可以使用垂直于(-y,x)的矢量作为步行力的方向。