基于iOS设备的自适应定位

时间:2012-10-12 17:00:18

标签: ios dynamic cocos2d-iphone positioning

几个月前我制作了一款iPhone游戏,现在正试图将它作为通用应用程序移植到带有Cocos2D的iPad和iPhone 5上。我想知道是否有一种简单的方法来根据运行游戏的设备确定对象的放置位置。

我可以使用if语句来确定游戏运行的设备,所以当我为设备获得正确大小的图像时,我可以为每个对象分别设置位置,但似乎会有一个数学公式允许我使用更少的代码。显然,像全屏幕背景这样的东西非常简单,因为它只需要以:

为中心
[background setPosition:CGPointMake(screenSize.width/2,screenSize.height/2)];

我不知道如何调整X = 144&的按钮。旧版3.5英寸,640 x 960分辨率iPhone的Y = 330,iPad或iPhone 5分辨率。

我愿意使用更新版本的iOS,如果它会让我的生活更轻松,但因为我没有使用任何Apple的对象,我不知道这是否可能。

也许这甚至不可能,因为iPhone和iPad版本的按钮大小不同,但我想我会问。

2 个答案:

答案 0 :(得分:1)

是的,我通常面临同样的问题, 但如果只是静态物体的放置 我会为每个对象relative coordinates instead of absolute 然后使用屏幕尺寸正确放置它们 所以你可能想要使用像这样的函数:

-(CGPoint) relativeToScreen:(CGPoint) p { 
    return ccp(screenSize.width * p.x, screenSize.height * p.y) 
}

其中0.0 <= p.x =&lt; p.y

的1.0和相同

并且不要忘记您的anchorPoint,因为节点位置也基于它

我希望您已经发现cocos2d已经选择了图像而不是您, 您只需为图片设置正确的后缀:-hd, -ipad, -ipadhd

答案 1 :(得分:0)

对于iphone5分辨率,我相对于屏幕尺寸定位hud按钮。非常类似于您为背景所做的事情。例如,我想在左上方的暂停按钮,我会这样定位:

[pauseButton setPosition:CGPointMake(0.0f + 30.0f, screenSize.height - 50.0f)];

对于ipad来说,它变得非常棘手。我实现的懒惰方式是使用内容比例因子并放大所有内容并使用“死”边框来补偿ipad的屏幕比例。不是最好的,但至少你可以为ipad重复使用所有相同的资产。