Sprite Kit:看不到现有节点的子节点
Sprite Kit: can not see existing node's children
我正在使用 SpriteKit 构建游戏。这是我的节点树:self.world.hydraAnchor.head
问题是head
看不到
代码简单
let world = SKSpriteNode()
addChild(world)
...
let hydraAnchor = SKSpriteNode()
hydraAnchor.position = anchorsPosition
world.addChild(hydraAnchor)
let head = SKSpriteNode(imageNamed: "hydraHead")
head.position = CGPointMake(anchorsPosition.x, anchorsPosition.y + 50)
hydraAnchor.addChild(head)
我在构建项目时看不到head
,而println(hydraAnchor.children)
给出了[<SKSpriteNode> name:'(null)' texture:[<SKTexture> 'hydraHead' (50 x 50)] position:{700.50396728515625, 2486.333251953125} size:{25, 25} rotation:0.00]
而当我没有将 head
添加到 hydraAnchor
时,我这样做:
world.addChild(head)
head
可见
zPosition
、invisible
和 alpha
属性与问题无关。
您忘记了节点的子节点的坐标系与父节点的坐标系不同。您的父节点的 "worldNode" 位置可能在 x:500、y:500 并且在父节点之上添加一个子节点 20 点将会 x:0 y:20。
您正在使用 worldNode 坐标而不是父坐标添加子节点。
当 head
是 hydraAnchor
的子项时,位置将相对于 hydraAnchor
。您可能正在寻找更像这样的东西:
let world = SKSpriteNode()
addChild.world()
...
let hydraAnchor = SKSpriteNode()
hydraAnchor.position = anchorsPosition
world.addChild(hydraAnchor)
let head = SKSpriteNode(imageNamed: "hydraHead")
// Position relative to hydraAnchor
head.position = CGPointMake(anchorsPosition.size.width / 2, anchorsPosition.size.height + head.size.height / 2)
hydraAnchor.addChild(head)
我正在使用 SpriteKit 构建游戏。这是我的节点树:self.world.hydraAnchor.head
问题是head
看不到
代码简单
let world = SKSpriteNode()
addChild(world)
...
let hydraAnchor = SKSpriteNode()
hydraAnchor.position = anchorsPosition
world.addChild(hydraAnchor)
let head = SKSpriteNode(imageNamed: "hydraHead")
head.position = CGPointMake(anchorsPosition.x, anchorsPosition.y + 50)
hydraAnchor.addChild(head)
我在构建项目时看不到head
,而println(hydraAnchor.children)
给出了[<SKSpriteNode> name:'(null)' texture:[<SKTexture> 'hydraHead' (50 x 50)] position:{700.50396728515625, 2486.333251953125} size:{25, 25} rotation:0.00]
而当我没有将 head
添加到 hydraAnchor
时,我这样做:
world.addChild(head)
head
可见
zPosition
、invisible
和 alpha
属性与问题无关。
您忘记了节点的子节点的坐标系与父节点的坐标系不同。您的父节点的 "worldNode" 位置可能在 x:500、y:500 并且在父节点之上添加一个子节点 20 点将会 x:0 y:20。
您正在使用 worldNode 坐标而不是父坐标添加子节点。
当 head
是 hydraAnchor
的子项时,位置将相对于 hydraAnchor
。您可能正在寻找更像这样的东西:
let world = SKSpriteNode()
addChild.world()
...
let hydraAnchor = SKSpriteNode()
hydraAnchor.position = anchorsPosition
world.addChild(hydraAnchor)
let head = SKSpriteNode(imageNamed: "hydraHead")
// Position relative to hydraAnchor
head.position = CGPointMake(anchorsPosition.size.width / 2, anchorsPosition.size.height + head.size.height / 2)
hydraAnchor.addChild(head)