这部分是SKShapeNode
var rect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 30, height: 30))
self.path = CGPathCreateWithRect(rect, nil)
和
let rect = SKShapeNode(rectOfSize: CGSize(width: 30, height: 30))
它们在模拟器中的行为似乎有所不同,我想知道它们是否在任何方面都不同。
最佳答案
SKShapeNode
的原点(0,0)是节点的中心,并且相对于该点绘制了路径。因此,使用以下CGRect
创建的形状节点
CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 30, height: 30))
将以其左下角在形状节点的中心进行绘制。
便捷方法
SKShapeNode(rectOfSize...)
通过将origin
的CGRect
自变量偏移矩形宽度和高度的一半来使rect在形状节点中居中。在这种情况下,rect的origin
为(-15,-15)。您可以通过偏移其原点来创建以
CGRect
为中心的SKShapeNode
:let height = CGFloat(30)
let width = CGFloat(30)
let anchorPoint = CGPoint(x:0.5, y:0.5)
CGRect(origin: CGPoint(x: -width*anchorPoint.x, y: -height*anchorPoint.y), size: CGSize(width: width, height: height))
其中
anchorPoint
定义了相对的“精灵中与节点位置相对应的点”。您也可以使用
SKShapeNode(path:path, centered:true)
,它将使用其边界框将路径居中。关于swift - SpriteKit中的这两个语句有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31764124/