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