所以我有一个 2d 游戏,它通常只有重力和“平坦”关卡,但我添加了具有自身重力的“行星”。
我有一个名为 addForce(float xForce, float yForce) 的函数,用于移动我的角色。所以说如果我调用 player.addForce(1, -1);玩家会向上和向右移动(尽管是轻微的)。这在具有规则向下重力的水平上运行良好,但对于行星而言并非如此。 还有另一个名为 earthAngle 的 float :
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(右)。我猜他们是一个非常优雅的解决方案,我只是忽略了。谢谢。
最佳答案
由于您已经有了从行星中心到玩家的 vector ,例如 (x,y),您可以使用垂直于该 vector (-y,x) 的 vector 作为行走力的方向。
关于java - 使角色绕圈移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6407028/