gpt4 book ai didi

ios - SKShapeNode 子项的框架给出错误的位置

转载 作者:行者123 更新时间:2023-11-30 13:05:44 25 4
gpt4 key购买 nike

我有一个 SKShapeNode,它有多个 SKSpriteNode 作为其子节点,这些子节点位于其中心周围的不同位置。我还旋转了 SKShapeNode,这实际上旋转了它的所有子节点。但是,当我循环遍历所有这些子项并在其框架的位置上绘制圆圈时,它们都绘制在屏幕的左下角(与实际绘制 Sprite 的位置偏移了很大的距离)。

let Circle = SKShapeNode(circleOfRadius: 110)
Circle.position = CGPointMake(0, 0)
Circle.name = "maincircle"

var tmpNode: SKSpriteNode


tmpNode = SKSpriteNode(imageNamed: fallingObjects[0])
tmpNode.name = "blue_hvat"
tmpNode.setScale(0.1)
tmpNode.position = CGPointMake(0, 80)
Circle.addChild(tmpNode)

tmpNode = SKSpriteNode(imageNamed: fallingObjects[1])
tmpNode.name = "green_hvat"
tmpNode.setScale(0.1)
tmpNode.position = CGPointMake(0, -80)
Circle.addChild(tmpNode)

...

self.addChild(Circle)

...

guard let obj = self.childNodeWithName("maincircle") else {
return
}
for l in (obj.children) {
//here when I use l.frame I get the wrong location of those sprites
continue
}

我浏览了 stackoverflow 并发现了类似的问题,但没有一个对我有帮助。我将不胜感激任何帮助。谢谢!

最佳答案

你的对象的所有子对象的x位置都是0。所以当你尝试在其框架的位置绘制圆圈时,它们都绘制在屏幕的左下角,这是正常的,因为在SpriteKit中,原点屏幕的左下角是因为所有对象的框架都是相对于其父对象的。

因此,如果您的父级的 x 位置250,并且在该父级内部,您有一个 x 位置 的节点0的code>,该子节点的位置相对于其父节点为0,相对于屏幕为250。

如果您想获取与 obj 节点的子节点的屏幕位置相关的信息,我建议您像这样继续操作:

l.frame.origin.x + obj.frame.origin.x
l.frame.origin.y + obj.frame.origin.y

关于ios - SKShapeNode 子项的框架给出错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39399833/

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