如何在Swift中修改SpriteKit节点的大小?

Sam*_*edo 4 ios sprite-kit skspritenode swift swift3

在我的应用程序中,对于一个屏幕,我正在设置大小并使SpriteKit节点的背景居中.例如,我正在设置背景子视图的大小,如下所示:

backgroundNode.size = self.frame.size  
Run Code Online (Sandbox Code Playgroud)

虽然这适用于iPhone 6 Plus,但iPhone 5的较小屏幕/较低分辨率意味着其他节点的默认大小太大而无法放入场景中.

如何强制其他节点符合后台节点的大小?我想用背景子视图的大小来划分每个子​​视图的大小,但是不能直接在size属性上进行数学运算.

cle*_*ght 5

SpriteKit场景(SKScene)包含节点,节点(SKNode),它们具有sizeposition属性(分别为type CGSize和type CGPoint).同样在IOS,所述 属性是一个对象,它是由和对象.因此,理解如何使用和真正有用.UIView frameCGRectCGSizeCGPointCGSizeCGPoint

SKNode大小和位置是类似于具有多个字段的简单C结构构建的的原因是因为它们是"复合类型",即它们每个都包含多个值.例如,CGSize包含widthheight属性,CGPointxy属性组成.

因此,如果要调整节点的大小和位置(或者UIView,通过其frame属性),则需要执行访问属性的额外步骤.

如果要分割的大小,你要访问widthheight对性能的CGSize单独的类.

一种方法是在一次操作中分配大小:

node.size = CGSize(width: node.size.width / backgroundNode.size.width,
   height: node.size.height / backgroundNode.size.height)
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做:

node.size.width =  node.size.width / backgroundNode.size.width
node.size.height = node.size.height / backgroundNode.size.height
Run Code Online (Sandbox Code Playgroud)

  • 熬了一夜后我明白了!!!我将节点的大小设置为等于帧大小并更改节点的 yScale 和 xScale。和繁荣!它们在每个屏幕上看起来都一样 `redFlagNode = SKSpriteNode(imageNamed: "redFlag")` `redFlagNode.position = CGPoint(x: frameWidth / 6, y: frameHeight / 2.2)` `redFlagNode.size = CGSize(width: frameWidth) ,高度:frameHeight)``redFlagNode.xScale = CGFloat(0.67)``redFlagNode.yScale = CGFloat(0.9)` (2认同)