SpriteKit和Swift中的setSpcale和SKSpriteNodes的大小有什么区别?

时间:2016-07-29 14:59:10

标签: ios swift sprite-kit skspritenode

我试图从PNG图像中设置SKSpriteNode的大小(好吧,只有:

test = SKSpriteNode(imageNamed: "myImage")

但是在调整大小时,我不确定是否应该使用test.setScaletest.size。 有什么区别,什么时候应该使用它们?

4 个答案:

答案 0 :(得分:6)

setScale()

设置节点的 xScale yScale 属性。这两个参数是比例因子,它将节点及其子节点的宽度(对于xScale)和高度(对于yScale)相乘。

代码示例:

spaceship.setScale(0.50) // decreased scale to it's half size

size(): 以磅为单位表示精灵的尺寸宽度高度)。

代码示例:

spaceship.size = CGSizeMake(100.0, 70.0) // Re-size the dimensions to these values

您何时使用setScale,何时使用size

通常setScale用于增加或减少关于比例因子的精灵,例如查看用于放大或缩小的SKAction.scaleTo

size经常被使用,因为你可以用点来表达你想要对你的精灵做的确切值。

答案 1 :(得分:5)

当您想要更改SKSpriteNode 的特定大小而不影响该精灵节点的任何子节点的大小时,您应该使用大小。

缩放精灵节点不仅会改变节点的大小(比例),它还会适当地(按比例)缩放所有精灵节点的子节点。

如果精灵节点没有子节点,那么尺寸和比例之间没有实际差别。

注意:我发现在无关紧要的情况下使用大小是有帮助的,因此我知道1.0的缩放始终是默认大小 - 使用scaleTo代替scaleBy并再次返回默认大小的动画很方便。

答案 2 :(得分:2)

如果你使用的是spriteNode,我会使用.setScale,或.xScale或.yScale,因为它们专门用于sprite。 .size也可用于UIKit中标签和文本视图的大小。

让我们说你想要精灵大2倍:

theNode.xScale = 2.0
theNode.yScale = 2.0

请注意,它们必须是浮点数,而不是整数

总而言之,.setScale适用于spriteNodes和图像,而.size适用于大量不是图像的事物,如标签等。因此,如果您使用的是精灵,请使用.setScale。如果要调整块的大小,请使用.size。

如果您认为这是正确答案,请将其标记为正确,以便其他人帮助解决此问题。谢谢!

答案 3 :(得分:0)

我总是使用.size属性调整大小,因为我相信当您使用.setScale / .xScale /。yScale时,节点的物理主体不会自动缩放。如果缩放节点,则需要重做physicsBody的大小。