【问题标题】:Loading and Unloading background images as game moves在游戏移动时加载和卸载背景图像
【发布时间】:2011-02-17 22:38:35
【问题描述】:

大家好, 我有一个我正在开发的raidan 风格的2d 飞行/战斗机游戏。 在将其从标准 NSObject 框架移至 Cocos2D 后,我的背景图像/精灵遇到了问题。

在 cocos2d 之前,我的背景在垂直方向上非常大。 320x9999(或其他)。但是它加载了,它创造了一个非常大的水平的错觉。 Cocos2d 对它的图像大小有限制,所以我不得不将图像分割成 33 个不同的背景图像,每个图像大小为 320x480。

了解内存在 iOS 平台上很重要,我决定创建 2 个背景 CCSprite: CCSprite *背景1,*背景2; Background2 在 background1 之上。

使用这两个背景,当 Jet 在屏幕上移动时,每个背景将以相同的速率在屏幕上反向移动,当第一个背景 1 垂直完全移出屏幕时,它被释放回内存中,然后一个新的sprite 被加载到 background1 中,然后 background1 垂直放置在 background2 上方。

当 background2 离开屏幕时,它被释放,一个新的图像被加载到 background2 中,它被放置在 background1 的顶部。

创造一个恒定且一致的背景的错觉。

问。这看起来像一个有效的方法吗? 问:我怎样才能以编程方式实现这样的目标?我有运动的物理原理和一切准备就绪。我只是有点不确定如何使用 Cocos 来做到这一点。

再次感谢您!

【问题讨论】:

    标签: iphone objective-c background cocos2d-iphone


    【解决方案1】:

    A1) 是的,这是一种有效的方法,而且几乎很容易做到 ht ecode 像这样(我可能有一些程序错误,几乎把它当作伪代码!):

    if(background[1].position.y < 0)
    {
        [layer removeChild:background[1] cleanup:YES];
        background[1] = background [2];
        background[2] = [CCSprite SpriteWithFile:"file id"]
        background[2].position = ccp(0,480);
        [background[2] runAction:[CCMoveBy actionWithDuration:1 position:ccp(0,1)]]
    }
    

    A2)如果您只需要一些指南,我会为您提供所需的实现,如果您的意思是您不知道如何使用 cocos2d-iphone 实现 plysics 的东西,请尝试这些手册:

    http://www.raywenderlich.com/457/intro-to-box2d-with-cocos2d-tutorial-bouncing-balls

    http://www.raywenderlich.com/475/how-to-create-a-simple-breakout-game-with-box2d-and-cocos2d-tutorial-part-12

    http://www.raywenderlich.com/505/how-to-create-a-simple-breakout-game-with-box2d-and-cocos2d-tutorial-part-22

    【讨论】:

      【解决方案2】:

      我不确定你说的是什么,我认为你在谈论交换背景,一个背景变得活跃,另一个占据下一部分的位置。这不是一种不常见的技术,类似的想法在很多方面都有使用。 还可以搜索剪辑贴图、巨型纹理、图集纹理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 2023-03-18
        • 2011-03-09
        • 2020-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多