Sprite Kit针对不同部分的重力不同

时间:2014-03-18 23:31:32

标签: sprite-kit game-physics skphysicsbody flappy-bird-clone

我正在建造一个飞扬的鸟类游戏,其中一半的水位在水面之上,另一半在水下。

如果你的鸟儿在空中,有规律的重力,当你点击时,会直接施加冲动。

如果你的鸟在水中,重力应该是负方向(向上)并且更少。点击时,会直接施加冲动。

我可以在不同的地方设置场景的重力吗?

如果鸟儿在水中,我想过用一个计时器来施加负力,但它已经遍布整个地方。

此外,我不能只改变整个场景的重力,因为场景中还有其他SKSprite对象应该有不同的重力(例如,空中的一只鸟应该在敲击时拍打,还有一只鸟在同时拍摄时,潜入水中的鸽子应该游泳。)

2 个答案:

答案 0 :(得分:2)

重力在全世界都是一样的,所以你不能拥有不同重力的区域。

然而,仅仅因为SpriteKit并没有为某些东西提供更高级别的抽象,并不意味着它很难为自己做。 SpriteKit的恒定引力对于一个物体做同样的事情,就好像每次你的场景update:方法运行时对它施加相同大小和方向的力。

因此,您可以在update:方法中在场景的上部和下部执行不同的重力。

  1. 检查您的鸟的y坐标。
  2. 如果它低于将水与空气隔开的阈值,请使用applyForce:施加向上的力。如果它高于水面,则施加向下的力。
  3. 因为每一帧都会发生这种情况,所以在水面以上时鸟会向下加速,在下面时会向上加速,你应该看到过渡后的动量效应很好。
  4. 你需要调整你的力量,直到它的行为适合你想要的游戏。当你这样做时,请注意applyForce:的单位是SKPhysicsWorld重力的150倍(因为它可能是一个苹果虫),并取决于你的质量物理机构(因为牛顿第二定律)。

答案 1 :(得分:0)

我知道如何做到这一点:

  1. 为上半部分和下半部分制作两个矩形(一个用于水,一个用于空气)
  2. 在每个矩形上创建一个物理体,模拟您想要的重力
  3. 将这些矩形设置为联系人delagate
  4. 将其他对象添加到它们应该位于的矩形世界中
  5. 处理主鸟:       - 当锚点(可能设置在中间)接触其中一个矩形时,        在联系事件中将主要玩家的联系代表从第一个主体更改为第二个主体。
  6. 这意味着你有两个具有不同重力的世界,一个主要角色的重力在新世界的接触中切换(穿过中间)

    祝你好运