2016-08-03 82 views
0

我正在製作一個簡單的spriteKit遊戲,並且我已經設置了所有的physicsBody。我已經添加了正確的categoryBitMasks和ContactTestBitMask來檢測聯繫。contactTestBitMask在SpriteKit中使用Swift在didBeginContact(日誌)中檢測不到

當我運行的應用程序,我有接觸,但它並沒有在日誌中的didBeginContact,我添加打印(「接觸」)

我似乎該得到展示。我查看了大概所有與此類似的問題和教程。

我曾嘗試2種不同的方法

enum ColliderType : UInt32 { 
    case None = 0 
    case All = 0xFFFFFFFF 
    case enemy = 0b001 
    case hero = 0b010 
    case screen = 0b100 
} 

let heroCategory :UInt32 = 0x1 << 0 
let screenCategory:UInt32 = 0x1 << 1 
let enemyCategory:UInt32 = 0x1 << 2 
let scoreCategory:UInt32 = 0x1 << 3 

它奇怪我怎麼有接觸,但它並沒有在日誌中打印。

我有一個移動的背景,移動朝向英雄的敵人。英雄會躲避敵人。

我嘗試添加了「GAMEOVER」功能,看它是否會通過設置

if self.movingParts.speed > 0 { 
     self.movingParts.speed = 0 

並設置速度的touchesBegan功能

,如果需要,我可以上傳代碼停止比賽。請告訴我。

任何形式的幫助表示讚賞。謝謝

回答

0

好了17天后,我終於想出了一個解決方案,真的不是我的錯。

我所做的就是刪除

func didBeginContact(contact: SKPhysicsContact) { 
    print("contact") 
} 

,並重新鍵入它。哇,奇怪,但它的工作。我已經注意到這個問題與其他問題(重新鍵入它的代碼工作)。

0

有3件事你需要設置。

physicsBody.categoryBitMask 
physicsBody.contactTestBitMask 
physicsBody.collisionBitMask 

另外一定要設置SKPhysicsContactDelegate。你應該在頂部

Class GameScene : SKScene, SKPhysicsContactDelegate { 

你下課後有SKPhysicsContactDelegate並確保您在您的didMoveToView有這個

self.physicsWorld.contactDelegate = self 

希望你這會有所幫助!

+0

感謝您的回答。我有你添加的所有信息。就像我提到的,我運行的應用程序沒有錯誤或警告。 – hka

+0

噢好吧,我需要看看你有'打印接觸'的代碼, –