SpriteKit中这两个语句有什么区别?

时间:2015-08-01 17:07:49

标签: swift sprite-kit skphysicsbody

这部分是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))

他们似乎在模拟器中表现不同,我想知道这些是否有任何不同。

1 个答案:

答案 0 :(得分:0)

SKShapeNode的原点(0,0)点是节点的中心,其路径是相对于该点绘制的。因此,使用以下CGRect

创建的形状节点
CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 30, height: 30))
将在形状节点中心的左下角绘制

方便方法SKShapeNode(rectOfSize...)通过将origin的{​​{1}}参数偏移矩形宽度和高度的一半来使矩形在形状节点中居中。在这种情况下,rect CGRect是(-15,-15)。

您可以通过抵消其来源创建以origin为中心的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,它将使用其边界框将路径居中。