如何获取SpriteKit中特定节点的数量?

问题描述

我正在制作一个iOS游戏,其中涉及用大炮射击炮弹。我如何获得现场的大炮数量?这是我创建,射击和删除炮弹的功能(当玩家点击屏幕时会调用功能):

func fireCannonBall()
    {
        let cannonBall = SKSpriteNode(imageNamed: "cannonBall")
        cannonBall.position.x = //some x-position
        cannonBall.position.y = //some y-position
        cannonBall.zPosition = 1
        self.addChild(cannonBall)
        
        let moveCannonBall = SKAction.moveBy(x: cos(currentAngle) * 2400,y: sin(currentAngle) * 2400,duration: 3)
        let deleteCannonBall = SKAction.removeFromParent()
        let cannonSequence = SKAction.sequence([cannonSound,moveCannonBall,deleteCannonBall])
        cannonBall.run(cannonSequence)
    }

解决方法

您可以为每个炮弹分配一个名称,例如cannonBall.name = "cannonBall"

然后您可以使用subscript(_:)enumerateChildNodes(withName:using:)方法获取场景中所有的炮弹。

这里是对Apple文档的引用:Searching the Node tree