【问题标题】:How to get Constant Velocity for Spritekit Gravity如何获得 Spritekit Gravity 的恒定速度
【发布时间】:2016-02-23 21:42:05
【问题描述】:

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

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

有没有办法让 SpriteKit 世界中的万有引力成为线性恒速?

【问题讨论】:

  • 您想要做的是将重力设置为零,并为每个块提供您希望它们行进方向的速度。然后它们将以线性恒定速度移动。

标签: ios swift sprite-kit gravity skphysicsworld


【解决方案1】:

使用默认物理不会达到您想要的效果。

在 Gravity in Site Kit 的definition 中明确表示是加速度,因此不可能用它实现线速度。

一个向量,指定施加到的重力加速度 物理世界中的物理物体。


但是,您可以有一些解决方法来实现您想要的行为。

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

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

2 - 限制最大速度

Consulting this post.

didSimulatePhysics(),你可以验证物体的速度,并限制它。

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

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

【讨论】:

  • 如果重力关闭,并且您正在向对象添加一定的速度,为什么需要限制最大速度?根据定义,速度将保持不变。
  • 这些是 3 个不同的选项...在 2 种方法中,您默认使用重力,只是限制了最大速度。
  • 我明白了,有道理,我明天会尝试选项 2 并报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多