【发布时间】:2015-10-20 15:20:36
【问题描述】:
我有一个节点同时与其他两个节点联系。我想知道的是,当我的节点(同时)与其他两个节点联系时,didContactBegin 代码是否同时触发,或者是一个 didContactBegin 处理然后下一个。
我会认为一个触发然后下一个,所以为了使第二个或第三个 didContactBegin 不触发,我设置了一个布尔值和一个计时器。但是在这样做之后,我开始认为 didContactBegin 会同时触发,因为我下面的代码似乎经常收到双 println 消息,但并非总是如此。
func didBeginContact(contact: SKPhysicsContact) {
if contact.bodyA.node?.name == "segment" || contact.bodyB.node?.name == "segment" {
if boolean == true {
boolean = false
timerResetBoolNextAction.invalidate()
timerResetBoolNextAction = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("ResetBoolean"), userInfo: nil, repeats: false)
println("boolean is true")
}
}
}
func ResetBoolean() {
boolNextAction = true
}
无论如何,我想知道的主要事情是 didContactBegin 是一次全部触发还是排队。因为如果它确实排队,我相信我的代码肯定有其他问题。
【问题讨论】:
-
你是什么意思“经常?”当它两次调用/不调用该函数时会发生什么变化?
标签: swift sprite-kit collision skphysicsbody