2015-08-14 90 views
1

我在sprite工具包中制作了一个侧面滚动游戏,其中有许多不同位置的节点。但是我在设置所有位置时遇到问题,因此它们在所有设备上的相同位置。我知道我可以测试哪个设备然后设置我的节点位置,但是当我有20个节点或更多节点时,这确实是很多工作。我也用plist和数组循环遍历其中的一些,这更加困难,因为我不想为所有位置的每个设备制作新的plist。Sprite工具包中的节点位置

有没有一种简单的方法让它们在所有不同的屏幕尺寸下都处于同一位置?

回答

1

您现在的位置在一个动态的方式您的节点取决于您的屏幕尺寸是这样的:

// get screen size 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width/100; 
CGFloat screenHeight = screenRect.size.height/100; 

myNode.position = CGPointMake(screenWidth*6, screenHeight*25); 

实际上使用的是实际的屏幕宽度和高度的百分比。

0

这里有两种思想流派。

第一个是你在一个特定的(x,y)如(20,50)设置他们的位置。这将确保它们始终与SpriteKit中左下角的距离相同。这也意味着事物可能会在适合大型设备的小型设备上移出屏幕。

第二学派(以及我最常使用的学派)是使用比例。 (xR,yR)代替静态(x,y),其中xR和yR是跨越屏幕大小的距离的比率。假设你想在屏幕中央放置一个角色,你可以使用(.5,.5),然后当你放置角色时,只需要将XR乘以屏幕的宽度,再乘以屏幕的高度。

CGPoint position = CGPointMake(xR * self.size.width, yR * self.size.height); 

其中self是SpriteKit中的场景或任何超级节点。