我正在开发我的第一个 cocos2d 游戏。它将有一个循环背景,三个不同的层都以不同的速度循环。循环的速度将根据用户输入而改变。
这是我的做法
-(void) update: (ccTime) dt
{
for (CCSprite *bckgrnd in backgroundArray){
switch (bckgrnd.tag) {
case 0:
bckgrnd.position = ccp(bckgrnd.position.x - speed * .30, bckgrnd.position.y);
break;
case 1:
bckgrnd.position = ccp(bckgrnd.position.x - speed * .80, bckgrnd.position.y);
break;
case 2:
bckgrnd.position = ccp(bckgrnd.position.x - speed * .50, bckgrnd.position.y);
break;
default:
break;
}
if (bckgrnd.position.x <= -kBacWidth) {
CGPoint greatestPosition = CGPointMake(0, 0);
for (CCSprite *sprt in backgroundArray){
if (sprt.tag == bckgrnd.tag && sprt.position.x > greatestPosition.x) {
greatestPosition = CGPointMake(sprt.position.x, sprt.position.y);
}
}
bckgrnd.position = ccp(greatestPosition.x + kBacWidth, bckgrnd.position.y);
}
}
}
这可行,但有两个问题。首先,它在第二次循环后会产生一个间隙,然后该间隙会保持在那里。另一个问题是背景的不同部分在屏幕向左移动时似乎“摆动”。这会导致单独的精灵有时会重叠一个像素。我不能拥有。我哪里错了?提前致谢!