首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >body停止时的回调。(SpriteKit)

body停止时的回调。(SpriteKit)
EN

Stack Overflow用户
提问于 2015-12-07 15:41:24
回答 2查看 98关注 0票数 1

我正在用SpriteKit开发一个游戏。

我心目中的英雄可以跳到平台上摔倒。当一个英雄在跳跃成功/失败后停止移动时,我需要一些回调。

我知道"resting“属性,但我想使用一些事件。就像"didBodyStopped“一样。

如何实现这个目标?

EN

回答 2

Stack Overflow用户

发布于 2015-12-07 17:43:56

你想要检测它是停止移动了,还是他在跳跃后又回到了“地面”?

如果是后者,您可以通过在播放器和地面的物理身体上正确设置contactTestBitMask,并使用场景的physicsWorldcontactDelegate来实现此功能。然后,你会接到didBeginContact:的电话,让你知道联系人的情况(你可能需要做一些检查,以确保这是你正在寻找的那种联系人)。

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

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

正如Whirlwind在下面的评论中指出的那样,resting可能不是检测节点停止移动的最可靠方法。详情请参见https://stackoverflow.com/a/25475871/3402095

票数 1
EN

Stack Overflow用户

发布于 2015-12-08 22:53:40

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

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

代码语言:javascript
复制
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")
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34128583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档