ios - 快速从 ccPhysicsCollisionBegin 返回 bool 时崩溃

标签 ios swift cocos2d-iphone physics

嘿,我有 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​​ 是解决崩溃的正确方法。

您现在收到的编译错误是一个不同的错误。您需要将声明中的 typeAtypeB 替换为 SpriteBuilder 中设置的 Collision type,对于您要检测的两个节点碰撞。

enter image description here

例如,如果我有一个节点的 Collision typelevel,另一个节点为 hero,函数将定义为:

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, level nodeA: CCNode!, hero nodeB: CCNode!) -> ObjCBool {
    ...
}

关于ios - 快速从 ccPhysicsCollisionBegin 返回 bool 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667663/

相关文章:

iOS ARC - 为什么对象不立即释放?

ios - 为什么 Xcode 无法识别我的核心数据实体的属性

ios - 在 UITableViewCell 中编辑 UITextField 时禁用 UITableView 的自动滚动

ios - 如果帐户从网络面板中删除,则用户应该从应用程序中自动注销

facebook - 呈现社交 View Controller Cocos2d

ios - b2Body 移动时更新 CC Sprite 位置?

ios - 更新 iOS 10 中的待处理通知

swift - 为什么这个 Swift UIImage 函数会溢出我的内存?

ios - 如何设置视频录制10秒限制并实时删除10秒旧电影部分 - Swift iOS

ios - 根据 cocos2D 和(?)iPad 上的 Box2d 的触摸轮动画?