移动背景屏幕以及在Iphone游戏应用程序中保持球的轨迹路径

时间:2010-11-22 13:35:04

标签: iphone xcode cocos2d-iphone

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

2 个答案:

答案 0 :(得分:3)

在cocos2d中,实现此目的的最简单方法是移动整个图层。如果你以正常的cocos2d方式做事,那么你有一个继承CCLayer的类。

在该课程中,您只需更改其位置即可获得所需的效果。

在您的示例中,由于您想要将“相机”向右移动,您只需将图层向左移动即可。例如:

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

在CCLayer中,该功能将使相机在120像素的中心位于之前的位置。如果您想要滚动效果,请执行相同的操作,但在图层中运行MoveTo或MoveBy操作。

答案 1 :(得分:2)

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

在iPhone上,您可以简单地将所有“世界对象”放在UIView内并向左和向右移动'UIView',同时世界对象相对移动到该视图内的“世界”,并且在屏幕上绘制视图时,将为您完成从“世界坐标空间”(视图坐标空间)到屏幕坐标空间的转换。