Xcode,无法运行 didBegin(_contact SKPysics)函数

Posted

技术标签:

【中文标题】Xcode,无法运行 didBegin(_contact SKPysics)函数【英文标题】:Xcode, Unable to run the didBegin(_contact SKPysics) function 【发布时间】:2020-08-26 17:44:08 【问题描述】:
class GameScene: SKScene 
    
    let player = SKSpriteNode(imageNamed: "spaceship")
    
    struct PhysicsCategories 
        static let None: UInt32 = 1
        static let Player: UInt32 = 0b1
        static let Obsticles: UInt32 = 0b10
        static let Diamond: UInt32 = 0b100
    
    
    func didBegin(_ contact: SKPhysicsContact) 
        
        var body1 = SKPhysicsBody()
        var body2 = SKPhysicsBody()
        
        if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask 
            body1 = contact.bodyA
            body2 = contact.bodyB
        
        else 
            body1 = contact.bodyB
            body2 = contact.bodyA
        
        
        if body1.categoryBitMask == PhysicsCategories.Player && body2.categoryBitMask == PhysicsCategories.Obsticles 
            body1.node?.removeFromParent()
            body2.node?.removeFromParent()
        
        
    

我想在钻石与玩家接触时将其移除,并在玩家与障碍物接触时移除它。 目前我无法注册他们之间的联系 我目前使用 Xcode 9.4.1 版。如果我将应用程序更新为,问题是否仍然存在

【问题讨论】:

【参考方案1】:

你在这里遗漏了很多东西(除非你有很多你没有显示的代码):

    接触只发生在物理实体之间,你没有任何接触 您的班级不是 SKPhysicsContactDelegate,而且您还没有将自己设为物理联系人代理。 您尚未定义希望您的代码收到通知的联系人。默认情况下,所有物理实体会相互“反弹”(碰撞),但当任何实体接触(接触)时,您不会收到通知。

我在这里写了更多细节:How to Detect collision in Swift, Sprite kit

【讨论】:

以上是关于Xcode,无法运行 didBegin(_contact SKPysics)函数的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 运行时错误无法加载“_IBBrokenImage_”

EdgeFromLoop 似乎没有调用 didBegin?

didBegin 未检测到两个 SKSpriteNode 之间的接触

升级到 Xcode 10.0 后无法构建模块“UIKit”

Xcode 无法构建 React Native 项目,架构 x86_64 的未定义符号

Xcode 4.5命令行单元测试