среда, 9 февраля 2011 г.

Скроллинг плиточного мира

Скроллинг плиточного мира.:

Представляю вашему вниманию перевод серии статей «Tutorial: N-way tile-based blit fine scrolling in AS3».

Мы обсудим теорию и практику скроллинга блитированной битмапдаты в любом направлении. Что это значит? Скроллинг это средство, с помощью которого вы можете передвинуть свой игровой экран в любом направлении, которое определяется углом поворота вашего персонажа. Здесь, в качестве примера мы рассмотрим двухмерную симуляцию автогонки с видом сверху, но техника, которую мы здесь рассмотрим, может применяться и в других играх. В нашем примере автомобиль всегда остается в центре экрана, а фон под ним прокручивается. Наш пример может быть легко сведен к скроллингу в 4-х и 8-ми направлениях, и хотя движение в таких играх не основано на направлении поворота, но способ скроллинга идентичен. Примеры скроллинга в 4-х и 8-ми направлениях мы также рассмотрим.

Что собой представляет скроллинг блитированного мира?

Скроллинг – это метод, с помощью которого мы показываем и обновляем только ту часть тайловой карты, которая видна на экране. Это не то же самое, что и хранение всего мира как одного большого объекта BitmapData и отображение только той части, которая нам нужна. Конечно, такой метод имеет право на жизнь, но он ограничивает физический размер мира, который мы можем создать. С помощью скроллинга тайлового мира, мы можем создать безграничный игровой мир. Мы можем представить его, например, как двухмерный массив (считываемый из xml) размером 100х100. Каждый элемент нашего массива представляет собой целое число, которое соответствует определенному тайлу на тайловом листе (можно посмотреть этот перевод). Мы показываем только то, что помещается на экране, но обновляем в буфере скроллинга область большую на один тайл в каждом направлении (влево, вправо, вверх, вниз), чем размер видимой области.

Мир, окно и буфер

Мир ссылается на всю карту тайлов, которую игрок может прокрутить. Окно – это текущий набор тайлов, который видит игрок. Буфер – набор тайлов больше размера окна на один тайл в каждом направлении. Сначала мы отрисовываем буфер, затем выясняем, какая граница будет видна игроку и отрисовываем область, ограниченную этой границей в окно. Пока мы здесь не говорим о коде, но когда я говорю «отрисовываем» и «прокрутить» я имею ввиду метод copyPixel() класса BitmapData и экземпляры класса Point и Rectangle необходимых для выполнения этого метода.

Точный скроллинг

Точный скроллинг дает нам возможность прокрутить экран на 1 пиксель за единицу времени в любом направлении. Это противоположность «тайловому скроллингу», когда экран прокручивается вверх, вниз, влево или вправо на целый тайл за один раз [...]

Комментариев нет:

Отправить комментарий