代码之家  ›  专栏  ›  技术社区  ›  Sri

在Iphone游戏应用程序中移动背景屏幕以及维护球的悲剧路径

  •  1
  • Sri  · 技术社区  · 14 年前

    我有一个游戏应用程序(cocos2d),在这个程序中,一个球将从大炮中射出,这个球穿过一个轨迹路径并降落在一栋建筑上。现在的问题是,根据要求,我必须增加背景图像的大小,因为我的建筑图像在第一次看到时是不可见的,而且随着球的移动,我必须拖动背景图像,而不干扰球的轨迹。在这方面有人能帮我吗。为了进一步澄清问题,我还附上了一张图片。提前谢谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   filipe    14 年前

    你所拥有的是两个不同的坐标空间,它们应该相互独立。 球应该在“世界”坐标空间中移动,独立于“屏幕”坐标空间。当然,“世界”必须显示在“屏幕”上,所以必须将“世界”坐标空间转换为“屏幕”坐标空间,在您的情况下,这是一个简单的转换,可以通过添加偏移量来完成。

    在iPhone上,你可以把所有的“世界对象”放在 UIView 将“UIView”左右移动,同时世界对象相对该视图中的“world”移动,当视图在屏幕上绘制时,将为您完成从“world coordinate space”(视图坐标空间)到屏幕坐标空间的转换。

        2
  •  3
  •   fairfieldt    14 年前

    在cocos2d中,最简单的方法是移动整个层。如果您是以普通的cocos2d方式执行操作,那么您有一个类,它是CCLayer的子类。

    在这个类中,你可以简单地改变它的位置,你就会得到想要的效果。

    在你的例子中,由于你想把“相机”移到右边,你可以简单地把图层移到左边。例如:

    -(void) centerOnBuilding {
        CGPoint distanceToMove = ccp(-120, 0);
        self.position = ccpAdd(distanceToMove, self.position);
    }
    

    在CCLayer中,这个函数的作用是使相机的中心距以前的位置右侧120像素。如果您想产生滚动效果,请执行相同的操作,但在层中运行MoveTo或MoveBy操作。