我正在用SpriteKit开发一个游戏。
我心目中的英雄可以跳到平台上摔倒。当一个英雄在跳跃成功/失败后停止移动时,我需要一些回调。
我知道"resting“属性,但我想使用一些事件。就像"didBodyStopped“一样。
如何实现这个目标?
发布于 2015-12-07 17:43:56
你想要检测它是停止移动了,还是他在跳跃后又回到了“地面”?
如果是后者,您可以通过在播放器和地面的物理身体上正确设置contactTestBitMask,并使用场景的physicsWorld的contactDelegate来实现此功能。然后,你会接到didBeginContact:的电话,让你知道联系人的情况(你可能需要做一些检查,以确保这是你正在寻找的那种联系人)。
如果你真的想要前者,你可以探索两个选择:
resting属性上添加键值观察。不过,我不确定它是否符合KVO。didSimulatePhysicsForScene:中,检查节点的resting属性。正如Whirlwind在下面的评论中指出的那样,resting可能不是检测节点停止移动的最可靠方法。详情请参见https://stackoverflow.com/a/25475871/3402095。
发布于 2015-12-08 22:53:40
此解决方案不使用物理,但可以帮助您。
如果您的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")
}
}
}https://stackoverflow.com/questions/34128583
复制相似问题