这部分是一个 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...)
通过将 CGRect
的 origin
参数偏移来使形状节点中的矩形居中矩形宽度和高度的一半。在本例中,矩形的原点
是(-15, -15)。
您可以通过偏移原点来创建以 SKShapeNode
为中心的 CGRect
:
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
定义相对“ Sprite 中与节点位置相对应的点。”
您还可以使用SKShapeNode(path:path, centered:true)
,它将使用其边界框将路径居中。
关于swift - SpriteKit中这两个语句有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764124/