ope*_*rog 10 ios ios7 sprite-kit skspritenode sknode
我创建了一个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];
Run Code Online (Sandbox Code Playgroud)
然后,为了查看坐标系原点,我在场景中添加了一个小的10x10彩色方块.
SKSpriteNode *ori = [SKSpriteNode spriteNodeWithColor:[UIColor greenColor] size:CGSizeMake(10,10)];
[self addChild:ori];
Run Code Online (Sandbox Code Playgroud)
你可以在左下角看到绿色方块:

从我的想法来看,SpriteKit坐标系是这样的,原点总是在中心.但在场景中,原点位于左下角.当我将子节点添加到{0,0}时,它也出现在左下角.
当我添加SKSpriteNode并将其在场景中定位{0,0}时,它会显示在左下角.但它以左下角的场景原点为中心(从左到右,从一半到左下).
但现在它变得更加混乱.当我将SKSpriteNode添加到另一个SKSpriteNode时,子精灵在父级中是CENTERED.
那么它是否意味着场景坐标系与精灵坐标系不同?
概括:
我的场景配置错误或者它的工作方式是什么?
Lea*_*s2D 17
这是它的工作方式.所有OpenGL视图(至少2D视图)的原点都在左下角.
你的精灵的位置也是正确的.两者都默认位于0,0.基于anchorPoint因子,相对于节点位置绘制精灵的纹理.它的默认值为0.5,0.5将纹理置于节点的位置中心.
您可以将场景的anchorPoint更改为0.5,0.5,这会将精灵移动到场景的中心.您也可以更改精灵的anchorPoint,但不建议这样做,因为它会影响旋转,缩放,碰撞检测和子节点位置等.