从 contact.bodyA.node 获取自定义 class 属性

Getting custom class property from contact.bodyA.node

我正在开发一个 IOS 游戏,我在使用 didBeginContact() 时遇到了一些问题。

我正在尝试从我的自定义 类、"FullBarClass" 中获取差异 属性。这是一些代码:

func didBeginContact(contact: SKPhysicsContact) {
    var a: SKPhysicsBody
    var b: SKPhysicsBody

    if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask{
        a = contact.bodyA
        b = contact.bodyB
    } else {
        b = contact.bodyA
        a = contact.bodyB
    }

    let bar : FullBarClass = contact.bodyA.node
    let dif = Int(bar.difference)
    println(dif)
}

在 "let bar : ..." 行,我收到一个错误:"SKNode? is not convertible to 'FullBarClass' "。

有人知道为什么这不起作用吗?

由于 contact.bodyA.node 是可选的 可能不是 FullBarClass,您不能简单地将正文节点对象分配给 FullBarClass常数。如果对象是合适的类型,您可以有条件地将对象分配给 bar

if let bar = contact.bodyA.node as? FullBarClass {
   // This will only execute if body node is a FullBarClass
   let dif = Int(bar.difference)
   print(dif)
}