gpt4 book ai didi

swift - 检测 SKSpriteNode 是否在底部离开屏幕并调用函数

转载 作者:搜寻专家 更新时间:2023-11-01 06:44:36 26 4
gpt4 key购买 nike

我试图找到一种方法来检测如果 SKSpriteNode 离开 屏幕(我想调用 Game Over 函数)。

我已经在一个函数中声明了节点(如果我做对了,它不是全局的?)并创建了 SKAction 将节点移出屏幕并随后将其删除。

这是我想出的:

 var node = SKSpriteNode()

let nodeTexture = SKTexture(imageNamed: "node")
nodeTexture.filteringMode = .Nearest
node = SKSpriteNode(texture: nodeTexture)

let nodeFalling = SKAction.moveToY(-70, duration: 1.6)
let nodeRemoving = SKAction.removeFromParent()
node.runAction(SKAction.sequence([nodeFalling, nodeRemoving]))

self.addChild(node)

现在我需要做的是在节点离开屏幕时调用 GameOver()。

我非常感谢每一个答案!

最佳答案

在您的场景中,您必须记住要检查的节点的引用,然后在 update 方法中,您只需执行以下操作:

    if node.position.y < -node.size.height/2.0 {
node.removeFromParent()
gameOver()

}

编辑:

class MyScene: SKScene {
// ....

//here is the list of nodes which you want to check
var nodesToCheck = [SKSpriteNode]()

//here is your spawn function

func spawnNewNode() {
var node = SKSpriteNode()

let nodeTexture = SKTexture(imageNamed: "node")
nodeTexture.filteringMode = .Nearest
node = SKSpriteNode(texture: nodeTexture)

let nodeFalling = SKAction.moveToY(-70, duration: 1.6)
let nodeRemoving = SKAction.removeFromParent()
node.runAction(SKAction.sequence([nodeFalling, nodeRemoving]))

self.addChild(node)
nodesToCheck.append(node)
}

//and here is the update method

override func update(currentTime: NSTimeInterval) {
super.update(currentTime)

// ... every other update logic

for node in nodesToCheck {
if node.position.y < -node.size.height/2.0 {
node.removeFromParent()
gameOver()
}
}
}

func gameOver() {
println("Damn!")
}

}

当它们不再是场景成员时,不要忘记从 nodeToCheck 数组中删除您的节点。

关于swift - 检测 SKSpriteNode 是否在底部离开屏幕并调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31772763/

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