Ios 移动节点集合的最佳方式是什么?

Ios 移动节点集合的最佳方式是什么?,ios,sprite-kit,Ios,Sprite Kit,在我的游戏中,我需要一个带有背景和边框的角色标签。为了实现这一点,我使用SKLabelNode、SKShapeNode和SKSpriteNode创建了以下代码: override func didMoveToView(view: SKView) { let label = SKLabelNode(fontNamed:"AmericanTypewriter-CondensedBold") label.text = &q

在我的游戏中,我需要一个带有背景和边框的角色标签。为了实现这一点,我使用SKLabelNode、SKShapeNode和SKSpriteNode创建了以下代码:

    override func didMoveToView(view: SKView) {
           
       let label = SKLabelNode(fontNamed:"AmericanTypewriter-CondensedBold")
       label.text = "H";
       label.fontColor = UIColor.blackColor()
       label.fontSize = 120;
       label.userInteractionEnabled = false
        
        let background = SKSpriteNode(color: UIColor(red: 255, green: 255, blue: 255, alpha: 0.4), size: CGSizeMake(label.frame.size.width*1.2, label.frame.size.height*1.2))
        background.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
        background.name = "bkg"
        background.addChild(label)
        label.position = CGPoint(x:0, y:-label.frame.size.height/2)
        
        let border = SKShapeNode(path: CGPathCreateWithRect(CGRectMake(-(background.frame.size.width/2), -(background.frame.size.height/2), background.frame.size.width, background.frame.size.height), nil))
        border.fillColor = UIColor.clearColor()
        border.strokeColor = UIColor.blackColor()
        border.lineWidth = 5.0
        border.userInteractionEnabled = false
        background.addChild(border)
        
        
        self.addChild(background)
        
        
        
    }
我看起来像这样:

然后我需要移动这个节点集合。我试图通过这种方式实现这一目标:

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
        for touch in touches {
            let location = touch.locationInNode(self)
            let touchedNode = nodeAtPoint(location)
            
            if touchedNode.name == "bkg" {
                touchedNode.position = location
            }
        }
    }
但它的运行并不平稳,很难利用这一点

我不知道我是改变了构建标签的方式(有3个节点)还是改变了移动标签的方式


是否有移动节点集合的最佳方法?

如果将所有节点添加到单个父节点,则可以移动该父节点,然后所有三个现有节点也将移动。

谢谢您的回答。我该怎么做?我是否应该将一个节点子类化并将所有内容放入这个新类中?我相信您可以将子节点添加到SpriteKit中的任何其他节点。尝试创建一个通用的
SKNode
,然后使用
parent.addChild(child)
将这些节点添加为子节点。您构建的方式似乎已经足够好了。我认为问题在于如何移动backgroundNode。