如何获得斯普里泰基特重力的恒定速度



我正在做一个俄罗斯方块类型的游戏,我希望我的方块以恒定的速度下落。我想使用SpriteKit Physics Words Gravity来实现它。

问题是重力必然是加速度,因此块在下落时开始移动得更快。我知道我可以关闭重力并使用动作来移动块,但我希望用重力来做到这一点。

有没有办法使SpriteKit世界中的引力成为线性恒定速度?

使用默认的物理特性,您将无法实现所需的目标。

在重力的定义中,套件很清楚这是一种加速度,因此不可能用它实现线性速度。

指定应用于的引力加速度的向量 物理世界中的物理机构。


但是,您可以使用一些解决方法来实现所需的行为。

  1. 重力加速度 0,并为下落物体增加速度。
  2. 限制对象的最大速度。
  3. 你拥有物理学吗

我认为最好的方法是限制最大速度,重力默认工作。

2 - 限制最大速度

咨询这篇文章。

在didSimulatePhysics()中,你可以验证对象的速度,并限制它。

像这样(致谢@Andrew,在原帖中)

- (void)didSimulatePhysics {
  if (node.physicsBody.velocity.x < MAX_SPEED_X) {
  node.physicsBody.velocity = CGVectorMake(MAX_SPEED_X, MAX_SPEED_Y);
 }
}

最新更新