我正在开发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?无法转换为'FullBarClass'”。
有人知道为什么这不起作用吗?
答案 0 :(得分:2)
由于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)
}