ИГРОДЕЛ
Войдите на сайт или зарегистрируйтесь!!!

LIGHT ADAPTATION ИЛИ ПРИВЫКАНИЕ ГЛАЗ К ОСВЕЩЕНИЮ

Перейти вниз

LIGHT ADAPTATION ИЛИ ПРИВЫКАНИЕ ГЛАЗ К ОСВЕЩЕНИЮ

Сообщение автор Admin в Пт Мар 19, 2010 10:18 pm

Время работы: 15 мин.
Требуются знания GM`а: выше средних
Версия GM`а: 6.0 – 7.0

Верите или нет, но и это можно эмулировать в Game Maker`е. Причём игра не будет требовать шейдеров и будет спокойно работать из-под DirectX 8.1, сохраняя при этом битрейт 32 бит (либо даже 16 бит).

Ни одного спрайта нам не потребуется. Одно главное – не создавайте новый файл, а используйте уже какую-то более-менее готовую игру с контрастными переходами цветов.

Создаем объект la_system. Он будет главным объектом ответственным за создание, проверку цвета и рисование la.

В <CREATE> пишем:

globalvar la_surface; ВНИМАНИЕ – Эту строку писать только если у вас Game Maker 7.0 и выше. Если нет – везде перед la_surface ставить global. . (т.е. global.la_surface)
la_surface = surface_create(view_wview[0], view_hview[0])
lacol=0
laalpha=0

В <BEGIN STEP>(!):

surface_set_target(la_surface) указываем цель для рисования
screen_redraw() перерисовываем экран
surface_reset_target() отменяем цель

Таким образом мы создаем полотно с размером под экран и перерисовываем содержимое экрана. Фактически, мы делаем копию изображения на экране в этом полотне. Туда же дописываем:

var col;
col= draw_getpixel(view_xview[0]+(view_wview[0]/2),view_yview[0]+(view_hview[0]/2))
lacol=1-(color_get_value(col)/255)

Этим мы «фотографируем» цвет пикселя, находящегося по указанным координатам (настраивайте их под себя, я указал координаты центра экрана). Третьей строкой мы записываем его яркость в lacol, но уже не в числах от 0 до 255, а от 0 до 1. Дописываем:

if(laalpha<lacol-0.05){laalpha+=0.005}
if(laalpha>lacol+0.05){laalpha-=0.005}

Этим мы «сглаживаем» изменения в цвете и записываем финальный результат в laalpha.

В <DRAW>:

draw_set_blend_mode(bm_add)
draw_surface_ext(la_surface,view_xview[0],view_yview[0],1,1,0,c_white,laalpha) рисуем полотно
draw_set_blend_mode(bm_normal)

Всё. Вот примерно такое должно получится:


avatar
Admin
Admin

Сообщения : 92
Очки : 280
Репутация : 36
Дата регистрации : 2010-02-20

Посмотреть профиль http://game-dll.mirbb.net

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения