私は最初のcocos2dゲームを開発しています。ループする背景、すべて異なる速度でループする3つの異なるレイヤーがあります。ループの速度は、ユーザー入力に基づいて変化します。
これが私がそうしている方法です
-(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);
}
}
}
これは機能しますが、2つの問題があります。最初に、2回目のループの後にギャップが作成され、次にギャップがそこにとどまります。もう1つの問題は、背景のさまざまな部分が画面上を左に移動するときに「揺れる」ように見えることです。これにより、個別のスプライトが時々ピクセル単位でオーバーラップします。私は持つことができません。どこが間違っているのですか?前もって感謝します!