我创建了一个 SKView ,它显示了一个 SKScene 子类,如下所示:
SKView *skv = [[SKView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:skv];
self.skScene = [[TestScene alloc] initWithSize:v.bounds.size];
[skv presentScene:_skScene];
然后为了查看坐标系原点,我在场景中添加了一个 10x10 的彩色小方块。
SKSpriteNode *ori = [SKSpriteNode spriteNodeWithColor:[UIColor greenColor] size:CGSizeMake(10,10)];
[self addChild:ori];
您可以在左下角看到绿色方块:
从我的想法来看,SpriteKit 坐标系是这样的,原点总是在中心。但在场景中,原点位于左下角。当我将子节点添加到 {0,0} 时,它也会出现在左下角。
当我添加一个 SKSpriteNode 并将其放置在场景中 {0,0} 时,它会出现在左下角。但它以左下角的场景原点为中心(向左剪掉一半,从底部剪掉一半)。
但现在它变得更加混乱。当我将 SKSpriteNode 添加到另一个 SKSpriteNode 时,子精灵在父精灵中居中。
那么这是否意味着场景坐标系与精灵坐标系的工作方式不同?
回顾:
- 当我在 {0,0} 的场景中放置一个精灵时,它出现在左下角,被剪掉 50%(以原点为中心)。
- 当我将精灵定位在 {0,0} 的精灵中时,它会出现在精灵的中心。
我的场景配置错误还是它的工作方式是这样的?