我很好奇如何在cocos2d中创建无限背景。例如,假设我正在构建一个从左到右运行的应用程序的应用程序,我希望他无限运行。那么在那种情况下,我必须拥有无尽的背景,这样男人才能继续奔跑。我一直在搜索这个问题,并且没有找到任何实际可行的东西。
非常感谢任何类型的建议,答案和提示。
由于
答案 0 :(得分:5)
试试这个:
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define MM_BG_SPEED_DUR ( IS_IPAD ? (6.0f) : (2.0f) )
-(void)onEnter
{
[super onEnter];
[self initBackground];
[self schedule: @selector(tick:)];
}
-(void)initBackground
{
NSString *tex = @"BG/Background.png";//[self getThemeBG];
mBG1 = [CCSprite spriteWithFile:tex];
mBG1.position = ccp(s.width*0.5f,s.height*0.5f);
[self addChild:mBG1 z:LAYER_BACKGROUND];
mBG2 = [CCSprite spriteWithFile:tex];
mBG2.position = ccp(s.width+s.width*0.5f,s.height*0.5f);
mBG2.flipX = true;
[self addChild:mBG2 z:LAYER_BACKGROUND];
}
-(void)scrollBackground:(ccTime)dt
{
CGSize s = [[CCDirector sharedDirector] winSize];
CGPoint pos1 = mBG1.position;
CGPoint pos2 = mBG2.position;
pos1.x -= MM_BG_SPEED_DUR;
pos2.x -= MM_BG_SPEED_DUR;
if(pos1.x <=-(s.width*0.5f) )
{
pos1.x = pos2.x + s.width;
}
if(pos2.x <=-(s.width*0.5f) )
{
pos2.x = pos1.x + s.width;
}
mBG1.position = pos1;
mBG2.position = pos2;
}
-(void)tick:(ccTime)dt
{
[self scrollBackground:dt];
}
答案 1 :(得分:2)
最简单的方法是包含两个无缝拼接在一起的背景图像。 (CCSprite可以正常工作)在您的更新方法中,一旦第一个背景完全离开屏幕,将其移回屏幕的另一侧,直接在第二个背景旁边,并连续移动两个背景图像。对第二个背景也重复此过程。
答案 2 :(得分:1)
CCTMXTiledMap
可以帮到你,但我担心你必须处理地图的结尾并手动添加另一个。查看本教程如何在横向滚动游戏中使用平铺地图,希望它对您有用:
http://www.raywenderlich.com/15230/how-to-make-a-platform-game-like-super-mario-brothers-part-1
答案 3 :(得分:0)
试试this。它很容易实现并且运行良好。只需按照阅读我的教程。