0

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

我可以使用 if 语句来确定游戏在哪个设备上运行,因此当我为设备获得正确尺寸的图像时,我可以为每个对象设置单独的位置,但似乎会有一个数学公式可以让我使用更少的代码。显然,像全屏背景这样的东西非常简单,因为它只需要居中:

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

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

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

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

4

2 回答 2

1

是的,我通常面临同样的问题,但如果它只是一个静态对象放置,我将为relative coordinates instead of absolute每个对象设置一个静态对象,然后使用屏幕尺寸正确放置它们,因此您可能想要使用如下功能:

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

其中 0.0 <= px =< 1.0 和 py 相同

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

我希望你已经发现 cocos2d 已经代替你进行图像选择了,你只需要为你的图像设置正确的后缀:-hd, -ipad, -ipadhd

于 2012-10-12T17:21:44.527 回答
0

对于 iphone5 分辨率,我将 hud 按钮相对于屏幕尺寸进行定位。与您为背景所做的非常相似。因此,例如,我想要在左上角的暂停按钮我会像这样放置:

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

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

于 2012-10-12T17:22:11.033 回答