Форум 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=188669)

TurboDizel 05.12.2012 01:27

Вопрос про скроллинг
 
Игра TDS (вид сверху). Хочу, чтобы при движении персонажа камера сверху следила за ним. Это чисто так образно, на самом деле понимаю, что нужно двигать саму карту, предметы и противников вместо самого персонажа или некой выдуманной "камеры". В общем-то мне всё отлично понятно, кроме самого основного, как мне из всех моих мувиков, которые используются в игре, сделать единый мувик, который я и буду двигать. Ведь не писать же мне в коде сдвиги по х и у каждого мувика отдельно?
На сцену всё добавляется чисто кодом, т.е. перед компиляцией поле пустое.
Я бы показал код (так как без него обычно не помогают), но даже не знаю, что именно показать). Если что нужно, напишите).

Frost47rus 05.12.2012 02:35

все объекты кладите в единый контейнер. его и двигайте по сцене.

TurboDizel 05.12.2012 12:27

Цитата:

Сообщение от Frost47rus (Сообщение 1107920)
все объекты кладите в единый контейнер. его и двигайте по сцене.

Попробовал, ничего не происходит. Вот так создал контейнер
private var Level:MovieClip = new MovieClip();
Вот так в него добавлял
Level.addChild(Bg3);

Для проверки движение сделал только в одну сторону вот так
Код AS3:

if (Hero.x >= ((mainx / 2) + sideright)) {
        Level.x -= Hero.speed;
        Hero.x = ((mainx / 2) + sideright);
}

sideright - переменная = 20
Hero.speed - скорость героя

Sintesis 05.12.2012 18:37

я делаю так:
Код AS3:

public function GameView(){
                        super();
 
                        _camera = new Sprite();//камера - просто спрайт, является контейнером
                        addChild(Dispatcher._store.getBgGame());//задний фон не движимый, если нужен
 
                        _avatar = new Sprite();//изображение героя
                        _avatar.graphics.beginFill(0xff0000);
                        _avatar.graphics.drawCircle(0, 0, 20);
 
                        addChild(_camera);
                        _camera.addChild(_avatar);
                        _camera.addChild(Dispatcher._store.getLevelsGraphic());//графика уровня
                        addEventListener(Event.ENTER_FRAME, update);
                }
 
                private function update(evant:Event):void {
 
                        _avatar.x = ...;//действуем на героя()
                        _avatar.y = ...;
                        _camera.x = -_avatar.x / 2.5 + 20;//действуем на камеру
                        _camera.y = -_avatar.y / 1.5 + 70;
 
                }
        }
}

Перемещать нужно героя в общем спрайте-контейнере. И перемещать контейнер, в котором все спрайты находятся. Выходит, что надо перемещать и героя, и камеру.


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

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