gpt4 book ai didi

swift - 为什么我的节点不在场景中时调用 didBeginContact 方法

转载 作者:行者123 更新时间:2023-11-30 13:51:44 28 4
gpt4 key购买 nike

func didBeginContact(contact: SKPhysicsContact) {

if contact.bodyA.categoryBitMask == PhysicsCategory.overPow || contact.bodyB.categoryBitMask == PhysicsCategory.overPow{
let sk = delegateForCollision!.view as! SKView
let newScene = GG(fileNamed: "GG")
newScene!.delegateFor = delegateForCollision
newScene?.scaleMode = .AspectFill
sk.presentScene(newScene)
}
if contact.bodyA.categoryBitMask == PhysicsCategory.glem && contact.bodyB.categoryBitMask == PhysicsCategory.kappa{
contact.bodyA.node?.removeFromParent()

glem++
glemLabel.text = "SKAŁY: \(glem)"

}

if contact.bodyB.categoryBitMask == PhysicsCategory.glem && contact.bodyA.categoryBitMask == PhysicsCategory.kappa{
contact.bodyB.node?.removeFromParent()

glem++
glemLabel.text = "SKAŁY: \(glem)"
}


}

glemkappa categoryBitMask 节点发生碰撞,因此 glem 变量应该是++ 一次,然后节点是从场景中删除,但看起来此方法在下一帧中被调用更多次。我在日志中看到它是因为我在 glem didSet 中添加了 print("\(glem)") 。为什么会发生这种情况?

最佳答案

我将 glem++ 更改为 if contact.bodyB.node?.parent != nil{glem++}
现在它可以正常工作了。

关于swift - 为什么我的节点不在场景中时调用 didBeginContact 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34188183/

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