繁体   English   中英

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

[英]What is the difference between these two statements in SpriteKit?

这部分是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...)通过将CGRectorigin参数偏移矩形宽度和高度的一半,将rect在形状节点中CGRect 在这种情况下,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) ,它将使用其边界框将SKShapeNode(path:path, centered:true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM