【发布时间】:2023-03-03 04:42:01
【问题描述】:
所以我有一个 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(右)。我猜他们是一个非常优雅的解决方案,我只是忽略了。谢谢。
【问题讨论】:
-
这个问题没有什么优雅之处,请重新格式化一下。
标签: java box2d game-physics trigonometry