为啥精灵套件中的坐标系会翻转,我可以全局更改吗?
Posted
技术标签:
【中文标题】为啥精灵套件中的坐标系会翻转,我可以全局更改吗?【英文标题】:Why is the coordinate system in sprite kit flipped and can I change that globally?为什么精灵套件中的坐标系会翻转,我可以全局更改吗? 【发布时间】:2013-12-22 20:52:13 【问题描述】:我注意到在 Sprite Kit 中坐标系是翻转的。
例如,这里是一个 SKSpriteNode:
SKSpriteNode *car = [SKSpriteNode spriteNodeWithImageNamed:@"car"];
car.position = CGPointMake(0, 0);
[road addChild:car];
汽车位于其父级的中心。
当我将位置设置为:
car.position = CGPointMake(-50, 0);
然后它位于更左侧。 但是当我想将它向下移动并增加 Y 时,它会向上移动!
car.position = CGPointMake(-50, 20);
在 UIKit 中,增加 Y 总是意味着某些东西向下移动。我觉得这更合乎逻辑。 Sprite Kit中有没有翻转坐标系的方法?
【问题讨论】:
不要与之抗争,拥抱它。这是标准的 OpenGL 坐标系。 嗯,这会让我很困惑...... 【参考方案1】:您可以将场景的 yScale
属性设置为 -1。一切都会颠倒渲染,但您也可以将每个节点的 yScale
属性设置为 -1,这将导致它们正面朝上渲染。
您还可以创建一个类类别并创建一个名为 invertedPosition
的属性,其中包含一个反转默认 position
属性的自定义 getter/setter。
【讨论】:
【参考方案2】:Sprite Kit 使用从场景左下角 (0,0) 开始的坐标方向,并且随着您向右(增加 x)和向上(增加 y)移动,值会增加。
【讨论】:
这并没有回答“我可以改变那个”的问题以上是关于为啥精灵套件中的坐标系会翻转,我可以全局更改吗?的主要内容,如果未能解决你的问题,请参考以下文章