Я разрабатываю игру для iPhone с использованием COCOS2d Framework и Objective-C (в альбомном режиме / режиме просмотра).
Для игры я использую фон с четырьмя слоями («Небо» сверху, «Гора» под небом, «Холм» под горой и крайний план переднего плана ниже). Здесь мне нужно переместить каждый слой фона с разной скоростью, например, «Небо» должно двигаться медленнее, чем «Гора», «Гора» должно двигаться медленнее, чем «Гора», а «Гора» должно двигаться медленнее, чем передний план.
Пока я двигаю каждый слой с разной скоростью, игра испытывает разрыв между координацией слоев.
Я попытался решить это с помощью логики, такой как: увеличение размера изображения / слоя (ширины) в соответствии с его скоростью, чтобы каждый слой заканчивался и снова начинал работать с координацией. Не удалось заставить его работать.
Это мой код для перемещения фона:
-(void) backgroundmoving
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//return kDevice_iPad;
// Code for Each Layer's Moving Speed FOR iPad
bk_f -=1.0;
bk_f1 -=1.4;
bk_f2 -=1.8;
bk_f3 -=2.2;
} else {
// Code for Each Layer's Moving Speed FOR iPhone
bk_f -=0.2;
bk_f1 -=0.4;
bk_f2 -=0.6;
bk_f3 -=0.8;
}
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//return kDevice_iPad;
if (bk_f <= -920*1.1) {bk_f=0;}
if (bk_f1 <= -920*1.1) {bk_f1=0;}
if (bk_f2 <= -920*1.1) {bk_f2=0;}
if (bk_f3 <= -920*1.1) {bk_f3=0;}
if (bk_f4 <= +920*1.1) {bk_f4=0;}
} else {
if (bk_f <= -480*2) {bk_f=0;}
if (bk_f1 <= -480*2) {bk_f1=0;}
if (bk_f2 <= -480*2) {bk_f2=0;}
if (bk_f3 <= -480*2) {bk_f3=0;}
if (bk_f4 <= +480*2) {bk_f4=0;}
}
_level_bkgrnd.position = ccp(bk_f, 0);
_level_bkgrnd1.position = ccp(bk_f1, 0);
_level_bkgrnd2.position = ccp(bk_f2, 0);
_level_bkgrnd3.position = ccp(bk_f3, 0);
}
Приведенный выше код дает мне фоновую проблему. Предоставляю ссылки на скриншоты для справки:
1) http://screencast.com/t/seUjXClz
2) http://screencast.com/t/8tHq2KYnnMa
Любая помощь, указывающая мне правильное направление, будет принята с благодарностью.
Заранее спасибо:)