java - 使角色绕圈移动

标签 java box2d game-physics trigonometry

所以我有一个 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/

相关文章:

c++ - 使用 Box2D 移动玩家

ios - 仅用于碰撞检测的 Box2D

game-physics - 子弹物理 : concave moving shape

game-physics - 将多边形分成小块或三角形

java - 算法逻辑

java - 如何在运行时覆盖我的 jar 中的 log4j 属性文件

java - 递归删除相邻的重复字符并返回结果字符串

java - 将正文请求 POST 中的多个文件上传到 Spring Restful API

swift - 如何让 Hero 物理体平静地停在移动平台物理体上?

java - 加工重力(楼层)