gpt4 book ai didi

iphone - 第一次接触后立即结束 Sprite 套件碰撞

转载 作者:行者123 更新时间:2023-11-30 10:18:53 27 4
gpt4 key购买 nike

您好,我正在尝试完善游戏中两个节点之间碰撞的逻辑。我想在玩家接触硬币时更新分数并隐藏节点。它工作正常,但在与隐藏节点的接触过程中分数会多次更新。我想知道是否有办法只运行一次,以便分数更新一次。这是我的代码

    //MARK: SKPhysicsContactDelegate methods

func didBeginContact(contact: SKPhysicsContact) {

if (contact.bodyA.categoryBitMask == userCategory) && (contact.bodyB.categoryBitMask == objectCategory) {

gameOver = 1
movingObjects.speed = 0
presentGameOverView()
}

if (contact.bodyA.categoryBitMask == userCategory) && (contact.bodyB.categoryBitMask == coinCategory) {
coinSound()
contact.bodyB.node?.hidden = true
score = score + 1
println(score)
}
}

最佳答案

您可以在增加分数之前检查节点是否隐藏。

func didBeginContact(contact: SKPhysicsContact) {

if (contact.bodyA.categoryBitMask == userCategory) && (contact.bodyB.categoryBitMask == objectCategory) {

gameOver = 1
movingObjects.speed = 0
presentGameOverView()
}

if (contact.bodyA.categoryBitMask == userCategory) && (contact.bodyB.categoryBitMask == coinCategory) {
if !contact.bodyB.node?.hidden // Added line
{
coinSound()
contact.bodyB.node?.hidden = true
score = score + 1
println(score)
}
}
}

将其从父级中删除

func didBeginContact(contact: SKPhysicsContact) {

if (contact.bodyA.categoryBitMask == userCategory) && (contact.bodyB.categoryBitMask == objectCategory) {

gameOver = 1
movingObjects.speed = 0
presentGameOverView()
}

if (contact.bodyA.categoryBitMask == userCategory) && (contact.bodyB.categoryBitMask == coinCategory) {
if contact.bodyB.node?.parent != nil {
coinSound()
contact.bodyB.node?.removeFromParent()
score = score + 1
println(score)
}
}
}

关于iphone - 第一次接触后立即结束 Sprite 套件碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460308/

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