2016-02-23 38 views
1

我正在制作一款俄罗斯方块类游戏,我希望我的方块能以等速度下落。我想用SpriteKit物理词重力来实现它。如何为Spritekit Gravity获得恒定速度

问题是重力一定是加速度,因此阻止他们下降时开始移动得更快。我知道我可以关闭重力并使用动作来移动块,但我希望通过重力来完成。

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

+0

你想要做什么是重力设置为零,只需给每个块的方向上的速度,你希望他们去旅行。然后他们将以线性恒定速度移动。 – ColGraff

回答

2

使用默认物理,你不会实现你正在寻找。

在重力在Spite 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); 
} 
} 
+0

如果重力关闭,并且您要为物体添加一定的速度,为什么需要限制最大速度?根据定义,速度将保持不变。 – Kashif

+0

这些是3种不同的选择......在2种方法中,您将重力作为默认值工作,只是限制最大速度。 – UlyssesR

+0

我明白了,有道理,明天我会尝试选项2并回报。 – Kashif