iOS7 Sprite Kit如何在更改锚点时计算节点位置?

Posted

技术标签:

【中文标题】iOS7 Sprite Kit如何在更改锚点时计算节点位置?【英文标题】:iOS7 Sprite Kit how to calculate node position when anchor point is changed? 【发布时间】:2014-04-09 23:35:28 【问题描述】:

我有一个 width x height 像素的节点,我想把它放在我知道的 (X,Y) 位置.但是,我还需要任意移动这个节点的锚点(anchorXanchorY)。

如果我在不考虑锚点的情况下继续添加子节点,则会移动子节点。我正在尝试弥补这种转变,并将节点准确地放在我想要的位置。

将节点添加为子节点时,我可以使用什么公式来解释锚点的变化?

到目前为止,我正在使用类似的东西,但我不确定减号。

 node.center =   CGPointMake(X-width*(0.5-anchorX) ,Y-height*(0.5-anchorY));

【问题讨论】:

我提供的方程式似乎有效 【参考方案1】:

与其想出一个有效的公式,不如将父级的锚点切换回 0.5、0.5,添加子级,然后返回修改后的锚点。

或者您可以放弃所有方程式,只需将任何子对象的锚点设置为与您的父对象相同:

SKSpriteNode *object1 = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(50, 50)];
object1.position = CGPointMake(300, 150);
object1.anchorPoint = CGPointMake(0.1, 0.2);
object1.zRotation = 1;
[self addChild:object1];

SKSpriteNode *object2 = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(50, 50)];
object2.anchorPoint = CGPointMake(object1.anchorPoint.x, object1.anchorPoint.y);
object2.position = CGPointMake(0, 0);
[object1 addChild:object2];

保证工作或退款! :)

【讨论】:

以上是关于iOS7 Sprite Kit如何在更改锚点时计算节点位置?的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 + Sprite Kit:如果我正在改变场景,如何保持一个计时器一直显示?

iOS 7 Sprite Kit 释放内存

iOS 7 之前的 Sprite Kit 可用性

iOS7 Sprite Kit 我可以存档整个场景并将其用作保存游戏吗?

如何根据平移手势速度向 Sprite Kit 节点应用角脉冲

iOS 7 Sprite Kit 动画速度变化