Движение камеры в AS3 - PullRequest
       36

Движение камеры в AS3

0 голосов
/ 09 марта 2012

ОК, поэтому у меня есть персонаж, который двигается с помощью мыши.Мне нужно, чтобы он оставался в центре экрана (вроде игры в платформер).Я не могу понять, как получить доступ к камере и переместить ее.(Примечание: я пробовал Vcam и перемещал все другие объекты, но Vcam замедляет файл или что-то в этом роде (или я так слышал), и перемещаю другие объекты как обман (и для моих нужд этого недостаточно))У меня нет кода, потому что я не знаю с чего начать.Может быть, кто-то может указать мне в правильном направлении.

Спасибо, Тор

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Это мой предыдущий ответ на найденный похожий вопрос здесь .

Что я здесь делаю:

Создать Mapкласс со свойством camera, который является другим пользовательским классом MapCamera.

MapCamera имеет пять свойств:

  1. _x
  2. _y
  3. map - ссылка на экземпляр Map, владеющий этим MapCamera
  4. offsetX
  5. offsetY

    • Значения смещения представляют интервалы x и y от левого и верхнего краев экрана, которые должны быть установлены равными половине ширины и высоты сцены, чтобы камера правильно центрировалась на сцене.
    • Свойства _x и _y имеют значение private и имеют геттеры и сеттеры.

Геттеры довольно простые:

public function get x():Number{ return _x; }
public function get y():Number{ return _y; }

Установщики - это то место, где будет изменен видовой экран, например:

public function set x(n:Number):void
{
    _x = n;
    map.x = -(_x + offsetX);
}

public function set y(n:Number):void
{
    _y = n;
    map.y = -(_y + offsetY);
}

Отсюда вы добавляете своих детей в контейнер Map и затем можете просто перейти:

map.camera.x = player.x;
map.camera.y = player.y;

Что приведет к тому, что игрок всегда будет в центре экрана.

1 голос
/ 09 марта 2012

Один из способов - сохранить все в одном DisplayObject, а затем переместить этот единственный объект в зависимости от движения камеры. Вместо перемещения камеры перемещайте основной контейнер в противоположном направлении камеры. Я не уверен, почему вы, похоже, предлагаете такую ​​стратегию, как «обман», поскольку это совершенно подходящий способ сделать это.

0 голосов
/ 09 марта 2012

Ваша камера является только вектором, который изменяет положение всех визуализируемых объектов.

myMovieClip.x = movingClipPosition.x + camera.x

Таким образом, если camera.x перемещается вправо, это заставит объект двигаться влево, создавая впечатление «камеры».

...