2014-10-17 1 views
1

Я пишу 2d игру, используя Cocos2d-iphone на новом языке программирования Apple Swift. У меня проблема с обнаружением столкновений. Я добавил 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

You имя метода/подпись не соответствует –

ответ

5

EDIT: Похоже, это может быть ошибка в Swift. Я больше не могу воссоздать эту версию с текущей версией Xcode. Похоже, ты можешь вернуть Бола сейчас.

Вам нужно будет вернуть тип 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 
} 

А затем ссылаться на узлы столкнулись с Аманом и топлива вместо узла А и Узлом.

+0

Это не ObjcCBool ​​но ObjCBool, пожалуйста, измените свой ответ для тех, кто может видеть этот вопрос. Спасибо за ваш ответ – Alfred

+0

Хороший улов. Благодаря! –

1

Я просто столкнулся с этой проблемой с моим проектом. Мне пришлось изменить методы ccPhysicsCollisionBegin, чтобы вернуть ObjCBool ​​для запуска на физическом устройстве. Я могу уйти с использованием Bool, когда он работает в симуляторе, но физическому устройству требуется, чтобы ObjCBool ​​запускался без исключения исключения.

Использование Xcode 6.2