swift - SpriteKit didEndContact 未被调用

标签 swift xcode sprite-kit skphysicscontact

在我的 didEndContact: 方法中,我增加了一个“currentScore”。

由于某种原因,didEndContact: 没有被调用,因此“currentScore”没有增加。任何想法为什么或我应该寻找什么来调试它?

func didEndContact(contact: SKPhysicsContact) {
    guard goal!.barEnabled else { return }
    score += 1
}

这是相关代码,如果我还可以添加任何其他有用的详细信息,请告诉我:

var barEnabled:Bool {
    set {
        bar?.physicsBody?.collisionBitMask = newValue ? CollisionMask.Puck : CollisionMask.None
        bar?.physicsBody?.categoryBitMask = newValue ? CollisionMask.Goal : CollisionMask.None
    }
    get {
        return bar?.physicsBody?.collisionBitMask == CollisionMask.Puck
    }
}

最佳答案

为了检测碰撞,您必须设置 physicsBodycontactTestBitMask

一个 physicsBodyscontactTestBitMask 和另一个 physicsBodyscategoryBitMask 必须不为 0 当一个二进制文件AND 运算应用于 2 个整数以触发检测。

如果您还没有,请确保场景的 physicsWorld.contactDelegate 设置为 self 并且它实现了 SKPhysicsContactDelegate.

关于swift - SpriteKit didEndContact 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40156663/

相关文章:

ios - 我如何在 Swift 中呈现另一个内部的 View Controller ?

SwiftUI:如何让按钮在 safari 中打开 URL?

ios - 创建后使 flutter 项目快速兼容

ios - YouTube API/JSON/swift

objective-c - 为什么 UITableViewCell 附件复选标记不会消失?

ios - 使用 CMMotionManager 快速配置加速度计跟踪

swift SKSprite 从一个游戏场景移动到另一个游戏场景

ios - 当 UITabbar 是半透明的并且 UIViewController 没有扩展到 tabbar 后面时,uitabbar 看起来像是覆盖了一个黑色 View

objective-c - iOS7 Sprite Kit如何将交互式Sprite Nodes和交互式UIViews结合起来?

ios - 尝试更改 webview.bounds.origin.x/y 时出现左值错误