我创建了一个 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} 时,它会出现在中心。
我的场景配置有问题还是这就是它的工作方式?