2015-06-05 3 views
1

Привет, у меня есть ccPhysicsCollisionPostSolve и ccPhysicsCollisionSeparate функции работают в swift, но когда я реализую ccPhysicsCollisionBegin, я получаю сбой при запуске.сбой при возврате bool из ccPhysicsCollisionBegin в swift

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, typeA nodeA: CCNode!, typeB nodeB: CCNode!) -> Bool { 
     NSLog("collision test begin") 
     return true 
} 

Я гугл, и обнаружил, что люди изменили возвращаемое значение ObjCBool, которое я попробовал и получил эту ошибку на компиляции,

/Users/macuser/Documents/spritetest2.spritebuilder/Battle.swift:121: 10: Objective-C method 'ccPhysicsCollisionBegin: typeA: typeB:' предоставляется методом 'ccPhysicsCollisionBegin (: typeA: typeB :)' конфликтует с дополнительным требованием метода 'ccPhysicsCollisionBegin (: typeA: typeB :)' в протоколе 'CCPhysicsCollisionDelegate'

Любые предложения?

+0

Ну, ошибка понятно, потому что теперь у вас есть два методы с тем же именем и теми же параметрами, но возвращающие разные значения - как теперь будет компилятор, какой из них вы действительно хотите выполнить? Какую ошибку вы получили, прежде чем менять что-либо по умолчанию? – luk2302

+0

Некоторая фатальная ошибка, в которой говорилось, что «ожидание Bool», которое я предполагаю, является obj-c bool. Я могу получить точную ошибку позже. – shwick

ответ

1

Изменение типа возврата на ObjCBool является правильным решением для сбоя.

Ошибка компиляции, которую вы сейчас получаете, представляет собой другую ошибку. Вы должны заменить typeA и typeB в декларации с помощью Collision type, установленного в SpriteBuilder, для двух узлов, для которых вы хотите обнаружить столкновение.

enter image description here

Например, если у меня есть узел с Collision type из level, а другой с hero, функция будет определяться как:

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, level nodeA: CCNode!, hero nodeB: CCNode!) -> ObjCBool { 
    ... 
} 
Смежные вопросы