Статья в формате *.docx Ispolqzovanie_surfeysov_v_GM.docx (36 кб.) Использование сурфейсов в GM Всем привет, я AgentX001 и сегодня мы разберёмся, что такое сурфейсы в Game Maker, и с чем их едят. К концу урока мы создадим эффект фонаря с использованием сурфейсов. Надеюсь, что вы имеете понятие о гм, так-как сурфейсы это довольно сложная тема! Цитата из справки: «В определённых ситуациях Вы можете не захотеть рисовать непосредственно на экране, а хотели бы рисовать на холсте, который можно отрисовать потом, чтобы закрашивать элементы на экране. Такой холст называется - сурфейс (surface,поверхность).Например, Вы хотите позволить, чтобы пользователь сам рисовал на экране. Краска не должна быть нарисована на экране (поскольку она будет удаляться каждый следующий шаг), но взамен Вы можете рисовать на отдельном сурфейсе, который будет копироваться на экране в каждом шаге. Или Вы хотите использовать текстуру, которая в завершении будет изменяться. Сурфейсы делают всё это возможным. Их фактически довольно просто использовать. Вы сначала создаёте сурфейс. Затем Вы указываете, что дальнейший рисование должно происходить на этом сурфейсе. С того момента во всех функциях рисования действие будет происходить на нём. Как только Вы завершили, повторно установите цель рисованияи дальнейшее рисование случится на экране. Вы можете рисовать сурфейс на экране многими различными путями или использовать его как структуру.» В справке, увы, чуток запутанно… Попробую объяснить я. Сурфейс – это некоторая область, на которой мы можем рисовать. И только рисовать. Например, мы можем создать объект гильзы, отрисовать его спрайт в сурфе и удалить сам объект. А картинка остаётся ((= Таким образом мы задействуем ресурсы видеокарты, почти не используя оперативную память. Сурфейсы целесообразно применять, когда некоторый объект должен быть только отрисован, но не должен взаимодействовать с другими объектами. Итак, фонарик! Предполагаю, что у вас есть какая-нибудь простенькая заготовка игры. С ней мы и будем работать. Создаём спрайт света фонаря spr_light. Оцентровываем как на рисунке. Создаём объект o_surf. Create: surf=surface_create(room_width,room_height)//создаём сурфейс, размером в комнату. lighter = false End step: surface_set_target(surf)//устанавливаем сурф для рисования draw_set_blend_mode_ext(bm_src_color,bm_one)//устанавливаем режим смешивания (Читать в справке, важно!) draw_clear_alpha(c_black,0.75)//заполняем комнату чёрным цветом, делаем «ночь» if lighter = true { draw_set_blend_mode(bm_subtract)//и снова режим смешивания… draw_sprite_ext(spr_light,-1,o_hero_body.x,o_hero_body.y,1,1,o_hero_weapons.image_angle,c_white,0.6) //малюем наш спрайт } draw_set_blend_mode(bm_normal) )//и снова режим смешивания… surface_reset_target()//обновляем сурф F-key lighter = !lighter Room end surface_free(surf)// чистим сурф при выходе, ВАЖНО! Draw draw_surface(surf,0,0)//малюем сурфейс И вуаля!! P. S.: в статье я использовал свою игру, вам прийдётся подстраивать код под себя. Но я ведь говорил – «Надеюсь, что вы имеете понятие о гм, так-как сурфейсы это довольно сложная тема!» В любом случае вы можете обратиться на форум сайта GCUP.RU!! |