2016-10-14 47 views
1

拉伸设置我spriteKit游戏模式是:SpriteKit - 背景图像非常

scene.scaleMode = .aspectFill 

而且设置我的背景图像。

sky = SKSpriteNode(imageNamed: "Sky") 
sky.position = CGPoint(x: 0, y: 0) 
sky.size.width = self.size.width 
sky.size.height = self.size.height 
sky.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
sky.zPosition = 1 
self.addChild(sky) 

图片的大小是2732x2048。它在4.7英寸的iPhone上看起来很糟糕。整个事情都完成了。
有没有办法,裁剪图像,但不能拉伸它以适应iPhone(图像的相同方面收音机)。

我试过其他的缩放模式,它们不起作用。
有人可以告诉我现在采取的正确措施是什么?

如果我提供iPhone作品怎么办?我如何与代码区分开来,例如指定iPhone应使用哪些图稿以及iPad应使用哪些图稿。

+0

如果您打算使用大图片,我会建议您改变场景大小以匹配它 – Knight0fDragon

+0

如果您提供的是iphone图稿,那么您需要更改模型,而不是使用scaleMode aspectFill,或者不要使用scaleMode aspectFill一个通用的应用程序,而不是做一个iPad应用程序和一个iPhone应用程序 – Knight0fDragon

回答

2

删除你设置天空的大小行,你应该完成以下任务:

不要设置大小的框架。相反,它设置为图像的大小,因此它被裁剪而不是缩放:

sky.size = sky.texture.size 

该代码将是2线你有设置它的宽度和高度的替代品。

这只有当你的图像大小与它的默认大小正确贴合工作(大小,你做它)

或者,你可以让你的应用普及,像这样。看看这个:iOS Universal Device App with SpriteKit, how to scale nodes for all views?。然后,您只需制作您的背景1024x1024(或任何尺寸足够大以适合所有设备尺寸宽高比)。这将在不同尺寸的设备上裁剪掉一部分,但纵横比不会因不同设备而改变或缩放。

+0

这不会做任何事情,天空默认情况下是纹理大小 – Knight0fDragon

+0

@ Knight0fDragon对。 OP将仍然必须删除设置的大小,尽管 – Nik

+0

绝对,现在他正在采取iPad的大小,并试图粉碎它,不好 – Knight0fDragon