相对于它们的父级定位精灵
Positioning sprites relative to their parent
-(void)drawGUIForPlayer:(PlayerClass *)player {
SKShapeNode *outlineBox = [SKShapeNode shapeNodeWithRect:CGRectMake(0, self.view.frame.size.height - 60, 150, 30)];
outlineBox.fillColor = [SKColor colorWithRed:0 green:0 blue:1 alpha:0.3];
outlineBox.strokeColor = [SKColor clearColor];
[self addChild:outlineBox];
SKLabelNode *playerName = [SKLabelNode labelNodeWithText:player.name];
playerName.color = [SKColor colorWithWhite:1 alpha:0.5];
playerName.fontSize = 10;
[outlineBox addChild:playerName];
[playerName setHorizontalAlignmentMode:SKLabelHorizontalAlignmentModeCenter];
[playerName setVerticalAlignmentMode:SKLabelVerticalAlignmentModeCenter];
}
以前,我会创建这样的技术来添加一个框,然后将标签作为框的子项。基本上使框成为一个视图,这样我就可以相对于 shapenode 定位标签。但是,有了这个,我得到了 0,0 的位置,它相对于 self.view 而不是 outlineBox.view.
谁能指出我正确的方向?
我想你可能误解了[SKShapeNode shapeNodeWithRect:CGRectMake(0, self.view.frame.size.height - 60, 150, 30)]
在做什么。
根据 Apple 文档 https://developer.apple.com/reference/spritekit/skshapenode/1520047-shapenodewithrect?language=objc:
A rectangle, relative to the node’s origin.
你的outlineBox
不是"centered"而是parent。
outlineBox
的 parent 是 self
。 playerName
的 parent 是 outlineBox
。由于您没有在 outlineBox
上调整任何变换,因此它看起来好像是相对于 self
.
请注意,您不应将 SKNode
称为 view
。他们没有。
-(void)drawGUIForPlayer:(PlayerClass *)player {
SKShapeNode *outlineBox = [SKShapeNode shapeNodeWithRect:CGRectMake(0, self.view.frame.size.height - 60, 150, 30)];
outlineBox.fillColor = [SKColor colorWithRed:0 green:0 blue:1 alpha:0.3];
outlineBox.strokeColor = [SKColor clearColor];
[self addChild:outlineBox];
SKLabelNode *playerName = [SKLabelNode labelNodeWithText:player.name];
playerName.color = [SKColor colorWithWhite:1 alpha:0.5];
playerName.fontSize = 10;
[outlineBox addChild:playerName];
[playerName setHorizontalAlignmentMode:SKLabelHorizontalAlignmentModeCenter];
[playerName setVerticalAlignmentMode:SKLabelVerticalAlignmentModeCenter];
}
以前,我会创建这样的技术来添加一个框,然后将标签作为框的子项。基本上使框成为一个视图,这样我就可以相对于 shapenode 定位标签。但是,有了这个,我得到了 0,0 的位置,它相对于 self.view 而不是 outlineBox.view.
谁能指出我正确的方向?
我想你可能误解了[SKShapeNode shapeNodeWithRect:CGRectMake(0, self.view.frame.size.height - 60, 150, 30)]
在做什么。
根据 Apple 文档 https://developer.apple.com/reference/spritekit/skshapenode/1520047-shapenodewithrect?language=objc:
A rectangle, relative to the node’s origin.
你的outlineBox
不是"centered"而是parent。
outlineBox
的 parent 是 self
。 playerName
的 parent 是 outlineBox
。由于您没有在 outlineBox
上调整任何变换,因此它看起来好像是相对于 self
.
请注意,您不应将 SKNode
称为 view
。他们没有。