移动除一个之外的所有 SKSpriteNode

Move all SKSpriteNodes except one

除了一个节点之外,我怎样才能在同一方向上移动视图中的所有节点?我正在创建的游戏类型的一个例子是口袋妖怪类型的结构,其中屏幕中央的主要角色在中央保持静止,所有背景对象移动。

如果有人知道我如何以最有效的方式完成此任务,我将不胜感激。

提前致谢。

在更新方法中,使用enumerateChildNodesWithName:usingBlock:并传递//*来枚举所有节点,然后在块内检查名称,如果不是您不想移动的名称,移动。

[self enumerateChildNodesWithName:@"//*" usingBlock:^(SKNode *node, BOOL *stop) {

    if (node.name != @"nameOfTheNodeYouDontWantToMove") {
        node.position = CGPointMake(node.position.x - 1, node.position.y);
    } 
}];

通常的做法是将所有移动对象添加到一个worldNode,然后改变worldNode的位置。将角色单独添加到 SKScene 中。

let worldNode = SKNode()
self.addChild(worldNode) // Add to SKScene
worldNode.addChild(childNode) //Add all nodes

//let character = SKSpriteNode 
character.position = centerOfScreen
self.addChild(character) // Add to SKScene

要移动所有精灵,请更改 worldNode

的位置
worldNode.position = newPosition