我创建了一个Sprite SKNode类,其工作原理类似于StackView。在Sprite Kit中,对象的原点始终居中,因此我想将位置偏移一定量(calculateAccumulatedFrame().width/2
),以便可以舒适地放置它。最好的方法是什么?
首先我想我可以做这样的事情
override var position: CGPoint {
didSet {
self.position = CGPoint(x: position.x - self.calculateAccumulatedFrame().width/2, y: position.y)
}
}
但是这当然是不可能的,因为这将以无休止的循环结束 还有什么其他选择?
答案 0 :(得分:0)
在Sprite Kit对象中,原点始终居中
那是不对的。有一个名为anchorPoint
的有用属性,您可以设置该属性以指定“来源”的位置。
从您的代码来看,您似乎希望锚点位于精灵右边缘的中点,假设精灵为矩形。这意味着您希望锚点为(1, 0.5)
:
yourSprite.anchorPoint = CGPoint(x: 1, y: 0.5)