gpt4 book ai didi

ios - 这个 SpriteKit 设置中的坐标系有什么问题?

转载 作者:技术小花猫 更新时间:2023-10-29 10:59:28 25 4
gpt4 key购买 nike

我创建了一个 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 的彩色小方 block 。

SKSpriteNode *ori = [SKSpriteNode spriteNodeWithColor:[UIColor greenColor] size:CGSizeMake(10,10)];
[self addChild:ori];

你可以看到左下角的绿色方 block :

green dot in lower left corner

根据我的想法,SpriteKit 坐标系是原点始终位于中心的坐标系。但在场景中原点在左下角。当我将子节点添加到 {0,0} 时,它也会出现在左下角。

当我添加一个 SKSpriteNode 并将其定位在场景中的 {0,0} 时,它出现在左下角。但它以左下角的场景原点为中心(向左剪掉一半,从底部剪掉一半)。

但现在它变得更加困惑。当我将一个 SKSpriteNode 添加到另一个 SKSpriteNode 时,子 Sprite 在父 Sprite 中居中。

那么这是否意味着 Scene 坐标系与 sprite 坐标系的工作方式不同?

回顾:

  • 当我将场景中的 Sprite 定位在 {0,0} 时,它出现在底部左边,剪掉 50%(以原点为中心)。
  • 当我将一个 Sprite 放置在 {0,0} 处的 Sprite 中时,它会显示在 Sprite 中。

是我的场景配置错误还是它的工作方式如此?

最佳答案

这是它的工作方式。所有 OpenGL View (至少是 2D View )的原点都在左下角。

你的 Sprite 的位置也是正确的。默认情况下,两者都位于 0,0。 Sprite 的纹理是根据 anchorPoint 因子相对于节点位置绘制的。它的默认值为 0.5,0.5 将纹理置于节点位置的中心。

您可以将场景的 anchor 更改为 0.5,0.5,这会将 Sprite 移动到场景的中心。您也可以更改 sprite 的 anchor ,但不推荐这样做,因为它会影响旋转、缩放、碰撞检测和子节点位置等内容。

关于ios - 这个 SpriteKit 设置中的坐标系有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com