簡體   English   中英

Xcode,無法運行 didBegin(_contact SKPysics) 函數

[英]Xcode, Unable to run the didBegin(_contact SKPysics) function

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. 接觸只發生在物理體之間,你沒有任何
  2. 您的課程不是 SKPhysicsContactDelegate,並且您還沒有讓自己成為物理聯系代表。
  3. 您尚未定義您希望向哪些聯系人通知您的代碼。 默認情況下,所有物理物體都會相互“反彈”(碰撞),但是當任何物體接觸(接觸)時,您不會收到通知。

我在這里寫了更多細節: 如何在 Swift、Sprite 套件中檢測碰撞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM