![]() |
|
![]() |
![]() |
Новости | Конференция | Чат | База данных | Творчество | Сообщество | О сайте | English |
![]() |
Помощь сайту |
![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LIGHT ADAPTATION ИЛИ ПРИВЫКАНИЕ ГЛАЗ К ОСВЕЩЕНИЮ Время работы: 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) Всё. Вот примерно такое должно получится: ![]() Права на фоновую картинку принадлежат Vetton.ru
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
Дизайн Elite Games V5 beta.18 EGM Elite Games Manager v5.17 02.05.2010 |
![]() |