Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Движение персонажа с перемещением фона (http://www.flasher.ru/forum/showthread.php?t=160784)

Scorp2008 17.07.2011 15:12

Движение персонажа с перемещением фона
 
всем привет, в игре делаю движение персонажа, но заместо него двигаю фон. Код такой:
Код AS3:

fonm.y -= speedpy;
fonm.x -= speedpx;

Работает конечно. Но необходимо сделать так чтобы когда игрок подходит к концу карты, то фон останавливался и по краю игрок двигался бы сам, т.е. например если подходим вниз до предела то уже двигается игрок, ну и соответственно если игрок выходит за пределы края то опять двигаем фон. Всю голову сломал, общий алгоритм вроде ясен ан муть получается какая-то в итоге.
Вот так пробовал сделать для предела низа:
Код AS3:

if(fonm.y > -480) {
        fonm.y -= speedpy;
}else {
        hero.y += speedpy;
        if (hero.y < 0) {
                fonm.y = -479;
                hero.y = 0;
        }
}

Все работает, когда игрок доходит до нижнего предела то уже двигается сам, а не фон, и когда выходит за пределы опять двигается фон. НО когда я попробовал сделать тоже самое с верхом (т.е. вместе чтоб и верх и низ так было) - то ничего не получается, скроллируется бесконечно карта. :(

RandomUser 17.07.2011 15:51

Почитайте http://xitri.com/2009/07/13/scrollin...cept_hero.html
Может, поможет.

Scorp2008 17.07.2011 16:19

Нет, где вы там нашли код смещения персонажа если фон пересек некую границу? Там только код смещения фона, хотя в самой флешке которая там лежит (именно в третьем кадре) - всё реализовано как надо, однако в самом коде нету этого :(
PS блог хитри перечитал весь давно, и когда начинал делать игру смотрел этот урок.

Добавлено через 53 минуты
Вроде получилось, вот код (вертикальное движение, отсюда и горизонтальное сделать не проблема:)
Код AS3:

if(fonm.y > -480 && fonm.y < 480) {
        fonm.y -= speedpy;
}else {
        hero.y += speedpy;
}
if (fonm.y <= -480 && hero.y < 0) { //niz
                fonm.y = -479;
                hero.y = 0;
}
if (fonm.y >= 480 && hero.y > 0) { //verh
                fonm.y = 479;
                hero.y = 0;
}

Если кто-то подскажет то же самое, но более оптимизированно - буду оч рад :)

Wily 17.07.2011 18:39

http://www.ant-karlov.ru/skrolling-igrovogo-mira.html


Часовой пояс GMT +4, время: 07:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.