2014-10-17 2 views
1

새로운 Apple 프로그래밍 언어 Swift에서 Cocos2d-iphone을 사용하여 2D 게임을 작성 중입니다. 충돌 감지에 문제가 있습니다. 나는 CCPhysicsCollisionDelegate을 추가하고 내 수업에 CCPhysicsCollisionBegin 방법을 구현하지만, 내가하려고하면 오류 다음과 같은 얻을 그것을 실행할 수 있습니다 : 편집PhysicsCollision Cocos2d/Swift

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

당신 메소드 이름/서명 그것은 아니다 ObjcCBool하지만 ObjCBool는이 질문을 볼 수 있습니다 다른 사람에 대한 답변을 수정하십시오 –

답변

5

:처럼 보이는

다음
'CCPhysicsCollisionBegin delegate methods must return a BOOL.' 

이처럼 내 방법은 모습입니다 이것은 Swift의 버그 일 수 있습니다. 나는 Xcode의 현재 버전으로 더 이상 이것을 재현 할 수 없다. 네가 지금 Bool을 돌려 줄 수있는 것 같아.

Cocos2D-swift는 Objective-C로 작성되었으므로 ObjCBool ​​유형을 반환해야합니다.

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

을 그리고 아만과 연료 대신이 nodeA 및 nodeB에서와 충돌 노드를 참조 : 또한 사용할 수 있습니다

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

: 같은

귀하의 방법을 찾아야한다.

+0

일치하지 않는 엑스 코드 6.2을 사용하여

. 귀하의 답변을 주셔서 감사합니다 – Alfred

+0

좋은 캐치. 감사! –

1

방금 ​​프로젝트에서이 문제가 발생했습니다. 물리적 장치에서 실행하기 위해 ObjCBool을 반환하도록 내 ccPhysicsCollisionBegin 메서드를 변경해야했습니다. 시뮬레이터에서 Bool을 사용할 때 Bool을 사용할 수 있지만 물리적 장치에는 ObjCBool이 예외를 throw하지 않고 실행해야합니다.