2014-10-17 16 views
1

我正在用新的Apple編程語言Swift編寫使用Cocos2d-iphone的2D遊戲。我遇到碰撞檢測問題。我已經加入CCPhysicsCollisionDelegate,在我的類中實現CCPhysicsCollisionBegin方法,但是當我嘗試運行它,我得到以下錯誤:PhysicsCollision Cocos2d/Swift

'CCPhysicsCollisionBegin delegate methods must return a BOOL.' 

這裏是我的方法是什麼樣子:

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, aMan nodeA: CCNode!, fuel nodeB: CCNode!) -> Bool { 
     return true 
    } 
+0

你的方法名/簽名不匹配 – 2014-10-19 23:08:48

回答

5

編輯:看起來像這可能是Swift中的一個錯誤。我不能用當前版本的Xcode重新創建它。好像你現在可以返回Bool。

您需要返回ObjCBool​​類型,因爲Cocos2D-swift是用Objective-C編寫的。

你的方法應該是這樣的:

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, aMan nodeA: CCNode!, fuel nodeB: CCNode!) -> ObjCBool { 
     return true 
} 

您還可以使用:

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, aMan: CCNode!, fuel: CCNode!) -> ObjCBool { 
     return true 
} 

然後用祖阿曼和燃料,而不是nodeA和nodeB上引用相撞節點。

+0

這不是ObjcCBool​​但ObjCBool​​,請編輯你的答案給別人誰可以看到這個問題。謝謝你的回答 – Alfred 2015-01-31 07:54:27

+0

好的。謝謝! – 2015-01-31 07:56:33

1

我剛剛遇到了這個問題,我的項目。我必須更改我的ccPhysicsCollisionBegin方法才能返回ObjCBool​​以便在物理設備上運行。在模擬器中運行時,我可以避免使用Bool,但物理設備需要運行ObjCBool​​而不會拋出異常。

使用的Xcode 6.2