嘿,我有 ccPhysicsCollisionPostSolve 和 ccPhysicsCollisionSeparate 函数在 swift 中工作,但是当我实现 ccPhysicsCollisionBegin 时,我在运行时遇到了崩溃。
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 方法 'ccPhysicsCollisionBegin:typeA:typeB:' 由方法 'ccPhysicsCollisionBegin(:typeA:typeB:)' 提供与协议(protocol)“CCPhysicsCollisionDelegate”中的可选要求方法“ccPhysicsCollisionBegin(:typeA:typeB:)”冲突
有什么建议吗?
最佳答案
将返回类型更改为 ObjCBool
是解决崩溃的正确方法。
您现在收到的编译错误是一个不同的错误。您需要将声明中的 typeA
和 typeB
替换为 SpriteBuilder 中设置的 Collision type
,对于您要检测的两个节点碰撞。
例如,如果我有一个节点的 Collision type
为 level
,另一个节点为 hero
,函数将定义为:
func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, level nodeA: CCNode!, hero nodeB: CCNode!) -> ObjCBool {
...
}
关于ios - 快速从 ccPhysicsCollisionBegin 返回 bool 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667663/