【问题标题】:Making Character move around circle使角色绕圈移动
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 编辑:没关系,我明白了。非常感谢,我不知道你能做到。
  • 非常好的解决方案,但是如果行星的中心在 (0,0) 处,它是否只适用于在圆上查找点?
  • @LFA2711 不。 “从行星中心到玩家位置的矢量”只是一个方向,而不是一个位置。例如,如果玩家直接站在半径为 1 的行星顶部,则该向量将为 (0,1)。行星和玩家对在世界的哪个位置无关紧要,它们之间的关系是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
相关资源
最近更新 更多