gpt4 book ai didi

Swift SKPhysicsBody 碰撞问题

转载 作者:搜寻专家 更新时间:2023-11-01 06:44:36 28 4
gpt4 key购买 nike

所以我正在尝试使用两个 SKPhysicsBody 对象。我在看一些教程来帮助处理碰撞机制并处理它。

我从其中一个教程中提取了这段代码:

    func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}


if ((firstBody.categoryBitMask & ColliderType.Bird != 0) &&
(secondBody.categoryBitMask & ColliderType.Edge != 0)) {
birdCollideWithEdge(firstBody.node as SKSpriteNode)
}

}

我的 ColliderType 是这样设置的:

enum ColliderType:UInt32 {
case Bird = 1
case Edge = 3
}

我得到的错误来自这一行:

 if ((firstBody.categoryBitMask & ColliderType.Bird != 0) &&
(secondBody.categoryBitMask & ColliderType.Edge != 0))

错误是

Could not find an overload for '&&' that accepts the supplied arguments

我尝试将 0 转换为 UInt32 并将 firstBody.categoryBitMask & ColliderType.Bird 转换为 Int 但这没有帮助。

我还尝试将 firstBody.categoryBitMask & ColliderType.Bird 从中取出,并将其设置为它自己的变量,认为 if 语句中可能发生了太多事情,但事实并非如此。也无法解决任何问题。

任何人都可以帮助我找到可能有帮助的正确文档,或者让我知道这在当前设置下是否行不通。

提前致谢

编辑:将rawValue 添加到ColliderType.Bird 的末尾修复了我的错误。

最佳答案

您可以这样使用枚举rawValue:

if ((firstBody.categoryBitMask & ColliderType.Bird.rawValue != 0) && (secondBody.categoryBitMask & ColliderType.Edge.rawValue != 0)) {

}

关于Swift SKPhysicsBody 碰撞问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com