Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免在swift中调整纹理大小_Swift_Sprite Kit_Textures_Skaction - Fatal编程技术网

如何避免在swift中调整纹理大小

如何避免在swift中调整纹理大小,swift,sprite-kit,textures,skaction,Swift,Sprite Kit,Textures,Skaction,我正在将Spritode添加到场景中,大小已给定 但是,当我更改Spritode的纹理时,大小会自动更改为纹理图像(png)的原始大小 我怎样才能避免这种情况 我的代码: var bomba = SKSpriteNode(imageNamed: "bomba2") var actionbomba = SKAction() bomba.size = CGSizeMake(frame2.size.width/18, frame2.size.width/18) let bomba3 = SKT

我正在将Spritode添加到场景中,大小已给定

但是,当我更改Spritode的纹理时,大小会自动更改为纹理图像(png)的原始大小

我怎样才能避免这种情况

我的代码:

var bomba = SKSpriteNode(imageNamed: "bomba2") 
var actionbomba = SKAction()
bomba.size = CGSizeMake(frame2.size.width/18, frame2.size.width/18)   
let bomba3 = SKTexture(imageNamed: "bomba3.png")
actionbomba.addObject(SKAction.moveBy(CGVectorMake(0, frame.size.height/2.65), duration: beweegsnelheid))
actionbomba.addObject(SKAction.setTexture(bomba3,resize: false))         

addChild(bomba)
bomba.runAction(SKAction.repeatAction(SKAction.sequence(actionbomba), count: -1))

不要显式设置大小。从您的信息精灵工具包将不会自动找到每个纹理的比例因子并进行缩放

相反,您可以设置节点的比例因子,每个纹理都将应用该比例

[playernode setScale: x];
像这样的。您只需在创建节点时设置它,并且每个纹理都将是您期望的大小,前提是您的纹理大小相同


我对所有使用多个纹理设置动画的节点使用此方法,并且每次都有效。

为什么您的操作会重复-1次,因为精灵会继续移动beweegsnelheid?但大小必须为frame.size.width/18。我无法用您的解决方案实现这一点,因为屏幕比例不同。还有其他的解决方案吗?用基本的数学计算你的x应该基于屏幕大小有什么错?你可以访问你的精灵的大小。您可以访问所需大小的精灵(帧大小/18)。要找到比例因子(x)应该是什么,应该没有什么遗漏。