Теперь у вас есть запись рабочего кода (ваш вопрос здесь), поэтому перейдите к коду и сделайте его вертикальным.
A position
в cocos2d представляет центр вашего фона.
position.x
- горизонтальный компонент, а position.y
- вертикальный компонент.
Установка новых позиций с помощью ccp
может рассматриваться как
background.position = ccp(newX,newY);
Если бы мы сделали модификацию для вас, мы бы отняли у вас хороший опыт обучения.Попробуйте и обновите свой вопрос, когда вы приблизились, но все еще застряли.
Обновите ... Итак
Давайте посмотрим на одну из строк кода, которые вы изменили
background.position = ccp(background.position.y - 30*dt,background.contentSize.width/2);
Это не будет делать то, что вы хотите, потому что вы только переключили x <-> y и width <-> height. Не бойтесь писать более длинный код, если вы не можете получитьдля работы с коротким кодом (вы должны узнать, прежде чем писать короткий код)
Для одной строки, на которой мы сосредоточены, давайте разберем ее для работы.
float bgOldX = background.position.x;
float bgOldY = background.position.y;
float bgNewY = bgOldY - 30*dt;
// no need for newX because we are moving horizontally
background.position = ccp(bgOldX,bgNewY);
Где бы вы ни находились, ваш исходный код был написан кем-то, кому это удобно.4 строки кода, заменяющие 1, не так хороши, но они помогут вам понять процесс.
Обновление
Вот пример того, как верхний блок вашего кода сменится на работу.Я полагаю, вы должны увидеть движение двух фонов.Это основано на предположении, что ваша первая функция void
работала.Я буду рад помочь вам в дальнейшем, если вы не можете заставить работать позицию сброса позиций.
-(void) scroll:(ccTime)dt
{
// i am not too fond of my variable names
//move 30*dt px vertically
float bgOldX = background.position.x;
float bgOldY = background.position.y;
float bg2OldX = background2.position.x;
float bg2OldY = background2.position.y;
float bgNewY,bg2NewY;
// no need for newX because we are moving horizontally
if (background.position.y<background2.position.y){
bgNewY = bgOldY-30dt;
bg2NewY = bgNewY+background.contentSize.height;
background.position = ccp(bgOldX,bgNewY);
background2.position = ccp(bg2OldX, bg2NewY);
}else{
bg2NewY = bg2OldY-30dt;
bgNewY = bg2NewY+background2.contentSize.height;
background.position = ccp(bgOldX,bgNewY);
background2.position = ccp(bg2OldX, bg2NewY);
}
//reset offscreen position
//reset offscreen position
// etc....
}