Архивы: по дате | по разделам | по авторам

DiNGS – программирование игр в домашних условиях. Часть 11.2

АрхивПрограммазм (архив)
автор : Александр Супрунов   20.03.2003

Об эффекте увеличения-уменьшения

ЭФФЕКТ Скалинг (увеличение-уменьшение).

Скалинг – один из самых используемых в играх эффектов. Его применение невероятно украшает игру. Вы это можете реализовать, как внезапно наезжающую на сцену камеру или увеличение каких-то объектов, как, например в увлекательной игре-головоломке Wumbos Adventure написанной создателем языка DiNGS. Скачать ее бесплатную версию (10 уровней) можно с сайта Dream-D-Sign.de и много удовольствия гарантировано. В Wumbos эффект скалинга используется при применении крокодильчиком ключей на дверях. Изображение ключа взлетает вверх постепенно увеличиваясь. В моей игре PING-PONG GOLD подобным образом реализованы монеты вылетающие из биты при столкновении с призом. Монеты плавно улетают вверх уменьшаясь и растворяясь (эффект альфаблендинга!) В Wumbos Adventure также можно увидеть и другие интересные эффекты, но исходные коды, к сожалению не прилагаются.

В DiNGS эффект скалинга достигается применением оператора ZOOMSPRITE. Он требует указать номер спрайта, координаты вывода на экран, на сколько процентов увеличить по оси Y, по оси Х и степень прозрачности.

Увеличение на 100% означает, что размер спрайта изменен не будет, а отобразится таким какой есть. Увеличение на 200% означает, что размер спрайта будет увеличен в 2 раза. Увеличение на 50% означает, что размер спрайта будет уменьшен на половину. Выведем спрайт колеса, но в полтора раза большего по размеру. Пример использования:

LOADSPRITE "koleso.bmp",10
ZOOMSPRITE 0,100,100,150,150,0
SHOWSCREEN
MOUSEWAIT

Из-за возможности изменять процент скалинга как по оси Х, так и по оси Y мы можем деформировать объекты. Как вам, например отлетающее от машины колесо, которое скачет по дорожке, становясь при столкновении с асфальтом овальным, и вновь выпрямляясь, подскакивая вверх? И все при использовании лишь одного спрайта!

Пример деформации колеса:

LOADSPRITE "koleso.bmp",10
ZOOMSPRITE 0,100,100,150,80,0
SHOWSCREEN
MOUSEWAIT

Вышеприведенные примеры – примеры статичные, но не сложно придать им динамику.

Пример динамического скалинга:

Scaling=10
number=1
LOADSPRITE "koleso.bmp",10

WHILE TRUE
ZOOMSPRITE 0,100,100,Scaling,80,0
Scaling=Scaling+numer

IF Scaling>=180 THEN Scaling=10
SHOWSCREEN
WEND

В данном примере колесо будет деформироваться, увеличиваясь в ширину и скачком, становясь вновь маленьким. Легкий путь избежать скачка – использование триггеров (см. выше). Так же введение переменной number дает нам возможность просто изменять в начале текста ее значение и получать разную скорость увеличения вместо кропотливого поиска нужной строки. В моем PING PONG GOLD мяч летит, увеличиваясь при отскоке от земли и уменьшаясь при падении. Точно также под ним ведет себя тень, но добавочно деформируясь по оси Х.

Использование скалинга не обязательно, но значительно украшает игру. Кроме того такой подход позволяет избавится от зависимости к размеру спрайтов. Создав спрайт любого размера мы всегда можем с легкостью придать ему размер необходимый нам посредством эффекта скалинга. В моем PING PONG GOLD неоднократно изменялись размеры спрайтов в поисках оптимального, но все делалось через скалинг без утомительной перерисовки. Но можно ли совместить эффекты скалинга и ротации? Ниже мы рассмотрим этот интересный вопрос, после чего углубимся в понятие Функции. Что это такое, для чего и в чем ее смысл.

(Продолжение следует)

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.