我正在开发一款 IOS 游戏,但我遇到了 didBeginContact() 的一些问题。
我正在尝试从我的自定义类之一“FullBarClass”中获取 .difference 属性。这是一些代码:
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
,你不能简单地分配 body 节点对象到 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)
}
关于ios - 从 contact.bodyA.node 获取自定义类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31550556/