Главная
1 Теория
2 Теория

3 Теория

Проекты

1 Файлы
2 Файлы
3 Файлы
1 Линки
2 Линки
3 Линки

Фон - программирование движения.

Сколько времени занимает прохождение уровня?
С какой скоростью движется пейзаж?
Предпологается что экран монитора показвает просчитанное изображение стоя на месте - сдвигается фон справа налево. Плоскость где находится фон многослойна:

  1. Самый дальний - фон;
  2. Слой ближе содержит предметы, скорость движения которых привязана к скорости движения фона;
  3. Более ближний слой - персонаж - он стоит на месте имитируя движение по двигающемуся фону;
  4. Самый ближний слой - маска растений и камней. Этот слой создает иллюзию псевдообьема.

Рассчитаем ширину фона.

Если на прохождение уровня отводится 180 сек, а экран должен проходить за 9 сек, то фирина фона должна превосходить ширину экрана в 20 раз. Так как ширина экрана при разрешение 800х600 (рабочее разрешение экрана игры) состовляет 800 писелей, то ширина фона будет составлять 800х20=16000 пикселей, а высота фон совпадает с высотой экрана - 600 пикселей.

Чтобы практически проверить это предположение нарисуем эскиз фона и напишем программу сдвига экрана справа налево.

Внимание Эскиз кусочка фона 1600х600 в формате bmp "весит" 2.8 мбт. Полный кусок будет около 28 мбт. Надо искать решение уменьшающее рамер графики.

В Blitz Basic началом координат является верхний правый угол изображения или спрайта, также как и у экрана монитора.
Перемещение спрайтов производится изменением координат опорной точки. Опорная точка имеет координаты (X,Y). Уменьшением занчения X спрайт перемещается влево, увеличением значения - вправо. Усли увеличить Y - спрайт начнет двигаться вниз, уменьшение приведет к подьему спрайта вверх. Когда основы движения двухмерных спрайтов стали понятны разберем програмный код.

Для перемещения фона надо:

  1. Очистить экран;
  2. Рассчитать новые значения опорной точки;
  3. Переместить спрайт в соответствии с новыми координатами опорной точки;
  4. Просчитать изображение;
  5. Поменять местами текущий кадр с просчитанным.

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


; Установка разрешения экрана 800х600 пикселов, 16 битный цвет
Graphics 800,600,16

; Установка режима видеобуфера оюмен информации экранами
SetBuffer BackBuffer()

;Задаем значение переменных
x=0

; Загрузка изображения и назначение значения переменной gfxPlayer
gfxPlayer=LoadImage("images\fon.jpg")

; Цикл отображения экрана
; Выход если нажать Esc
While Not KeyHit(1)
Cls ; Очистка экрана
If x=-800 Then x=1 ; Когда фон сместится на один экран влево, начинается повтор фона,
ситуация которая нужна для уменьшения размеров фона.
x=x-1 ; Уменьшение переменной для сдвига влево
DrawImage gfxPlayer,x,0 ; Прорисовка рисунка с координатами (х,0)
Flip ; Обмен изобажениями экрана и буфера
Wend ; Переход на начало цикла

End


Имитация обьема фона (02.12.2002)

Если присмотреться в хорошую погоду на небо - облака почти не двигаются.
Двигаясь по дороге, замечаешь, как деревья вдали двигаются медленно, а кустарник, расположенный ближе - двигается быстрее. Для реализации псевдообьема сделаем четыре слоя.

1. Небо - стоит неподвижно;
2. Деревья - 1 писель за цикл;
3. Персонажы - состоит из некольких спрайтов;
4. Кустарник - 1 пиксель за цикл. Кустарники движутся вместе с фоном иначе они отрываются от фона и живут своей жизнью...

Проект стартовал в ноябре 2002 г.
Hosted by uCoz