所以我有一个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(右)。我猜它们是一个非常优雅的解决方案,我只是在俯视。感谢。
答案 0 :(得分:3)
由于你已经拥有从行星中心到玩家的矢量,例如(x,y),你可以使用垂直于(-y,x)的矢量作为步行力的方向。