在Iphone游戏应用程序中移动背景屏幕并保持球的悲剧轨迹

在Iphone游戏应用程序中移动背景屏幕并保持球的悲剧轨迹,iphone,xcode,cocos2d-iphone,Iphone,Xcode,Cocos2d Iphone,我有一个游戏应用程序(cocos2d),其中一个球将从大炮中射出,这个球穿过一条轨迹路径并降落在一座建筑物上。现在的问题是,根据要求,我必须增加背景图像的大小,因为我的建筑图像在第一视图中不可见,随着球的移动,我必须在不干扰球轨迹的情况下拖动背景图像。在这方面有人能帮我吗。为了进一步澄清这个问题,我还附上了一张图片。提前谢谢 您拥有的是两个不同的坐标空间,它们应该相互独立。 球应该在“世界”坐标空间中移动,独立于“屏幕”坐标空间。当然,“世界”必须显示在“屏幕”上,因此您必须将“世界”坐标空间转

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

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


在iPhone上,您可以简单地将所有“世界对象”放在
UIView
中,并左右移动该“UIView”,而世界对象相对于该视图中的“世界”移动,并从“世界坐标空间”(视图坐标空间)进行转换在屏幕上绘制视图时,将为您创建屏幕坐标空间。

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


在iPhone上,您可以简单地将所有“世界对象”放在
UIView
中,并左右移动该“UIView”,而世界对象相对于该视图中的“世界”移动,并从“世界坐标空间”(视图坐标空间)进行转换在屏幕上绘制视图时,将为您创建屏幕坐标空间。

在cocos2d中,最简单的方法是移动整个图层。如果您以正常的cocos2d方式进行操作,那么您有一个将CCLayer子类化的类

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

在您的示例中,由于要将“摄影机”向右移动,因此只需将层向左移动即可。例如:

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

在CCLayer中,该功能的作用是将相机的120个像素居中于其之前所在位置的右侧。如果您想获得滚动效果,请执行相同的操作,但在图层中运行MoveTo或MoveBy操作。

在cocos2d中,实现这一点的最简单方法是移动整个图层。如果您以正常的cocos2d方式进行操作,那么您有一个将CCLayer子类化的类

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

在您的示例中,由于要将“摄影机”向右移动,因此只需将层向左移动即可。例如:

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

在CCLayer中,该功能的作用是将相机的120个像素居中于其之前所在位置的右侧。如果您想获得滚动效果,请执行相同的操作,但在图层中运行MoveTo或MoveBy操作。

对此我不清楚。你能简要地解释一下吗。我不明白什么是坐标空间。这里我没有使用uiview这是一个cocos2d游戏应用程序。我的意思是你有两个坐标系。坐标的两个原点应该是独立的。球的位置应始终相对于“世界”原点。“世界”的位置可以相对于“屏幕”原点移动。对此我不清楚。你能简要地解释一下吗。我不明白什么是坐标空间。这里我没有使用uiview这是一个cocos2d游戏应用程序。我的意思是你有两个坐标系。坐标的两个原点应该是独立的。球的位置应始终相对于“世界”原点。“世界”的位置可以相对于“屏幕”原点移动。