如何创建水平居中的“重力”? - libGDX -

时间:2014-02-11 00:31:24

标签: java android libgdx box2d game-physics

这是一个看似简单的游戏机制,我一直试图弄清楚该怎么做。

试着解释我会描述一个想法(问题):

  • 基本上我们说有一条垂直线居中 屏幕。

  • 我们有一个精灵对象,它将水平速度改为 躲避导弹,然而在这样做时,物体会漂移 程。

  • 如何向水平“中心线”添加强重力 我的屏幕让我的精灵每次都会“掉进”它 向外提升速度?

我可以发布我的源代码,但在这种特殊情况下解决问题不会太有帮助。

我已经搜索了几天试图解决这个问题,所以任何帮助,尤其是代码示例都会非常有用!

enter image description here

2 个答案:

答案 0 :(得分:4)

我过去曾编程过这种类型的东西。重力(在物理学中)是加速度,所以

1)如果精灵位于该行的右侧,则每1 / n秒从其水平速度中减去,并且

2)如果精灵位于该行的左侧,则每1 / n秒加入其水平速度。

尝试添加/减去一个常数,或者添加/减去一个数字,该数字会增加精灵离中心线的距离。

无论哪种方式,你都会产生钟摆效应。如果你不想要,你还必须添加一个阻尼因子。一种简单的方法是,如果精灵远离中心线,则加/减的值大于精灵向后返回中心线的值。因此,将精灵拉到停止位置的“重力”大于将精灵带回中心线的重力加速度。

答案 1 :(得分:0)

当你使用libgdx时,你也应该使用相机。所以你不必计算像素的东西。例如,你说我的屏幕是16个世界单位宽度和9个世界单位高度(16/9纵横比)。所以你可以说重心位于16的中心,所以8.5如果我没有错。现在您可以说:if (player.center.x < 8.5f) { player.xSpeed += GRAVITY_HORIZONTAL }if (player.center.x > 8.5) { player.xSpeed -= GRAVITY_HORIZONTAL }。在这种情况下,重力是恒定值。但正如@BrettFromLA所说,如果到中心的距离增加,你也可以让价值增长。