身体停止时回调。 (SpriteKit)

时间:2015-12-07 07:41:24

标签: ios objective-c sprite-kit

我正在使用SpriteKit开发游戏 我的英雄可以跳上平台而摔倒。 当英雄在成功/不成功跳跃后停止移动时,我需要某种回调 我知道"休息"财产,但我想使用一些事件。类似于" doBodyStopped" 如何实现这个?

2 个答案:

答案 0 :(得分:1)

你想知道它是否停止移动,或者他现在是否已经回到地面"跳了之后?

如果是后者,您可以通过在播放器的物理机构和地面上正确设置contactTestBitMask并使用场景contactDelegate的{​​{1}}来实现此目的。然后,您可以拨打physicsWorld来通知您联系人(您可能需要进行一些检查以确定它是您正在寻找的那种联系方式)

如果你真的想要前者,你可以探索两个选择:

  • 在节点的didBeginContact:属性上添加键值观察。但不确定它是否符合KVO标准。
  • resting中,检查您节点的didSimulatePhysicsForScene:属性。

正如Whirlwind在下面的评论中所指出的,resting可能不是检测已停止移动的节点的最可靠方法。有关详细信息,请参阅https://stackoverflow.com/a/25475871/3402095

答案 1 :(得分:0)

此解决方案不使用物理,但可以帮助您。

如果Player使用SKAction跳转,您可以使用runAction方法的回调。

class Player: SKSpriteNode {

    func jump() {
        let delta : CGFloat = 50
        let up = SKAction.moveToY(delta, duration: 1)
        let down = SKAction.moveToY(-delta, duration: 1)
        let jump = SKAction.sequence([up, down])
        self.runAction(jump) {
            print("Jump has finished")
        }
    }
}