Добавление ресурсов (Спрайтов, звуков, тайлов, бэкграундов) из папок.1. Ресурсы будем загружать все сразу, так как загрузка ресурсов в процессе игры (при создании объектов) тормозит игру.
2. В проекте создаем объект
obj_load_resurs. Делаем его постоянным.
3. Помещаем его в самую первую комнату ДО того как туда будут помещены другие объекты. Это нужно для того, что бы загрузить ресурсы до того как они понадобятся другим объектам.
4. А папке с проектом создаем папку
resurs (название всех папок может быть любое, какое Вам захочется). В этой папке будут храниться все ресурсы игры. Создадим в папке
resurs еще три папки:
background,
sprites, sounds. Думаю назначение папок понятно.
5. В папку
background добавим изображение
bac_background.png – это будет наше фоновое изображение.
6. В папку
sprites добавим изображение
spr_player.png - это будет спрайт игрока. И добавим изображение
spr_gm_strip.png - это изображение будет состоять из трех кадров. Из него мы сделаем анимированый спрайт, для демонстрации загрузки стрипов.
7. В папку
sounds добавим звук
snd_bullet_01.wav - это будет звук выстрела.
8. В самом начале игры мы загрузим все ресурсы. Для этого открываем объект
obj_load_resurs и добавляем событие "
создание" ("
Create"). В этом событии такой код:
//Подробнее о функциях, которые здесь используются, и о переменных, которые используются
//в этих функциях, читайте в справке. Там все подробно описано.
//Загрузка спрайтов
sp_player = sprite_add('resurs\sprites\spr_player.png',1,0,0,16,16);
sp_gm_strip = sprite_add('resurs\sprites\spr_gm_strip.png',3,0,0,24,24);
//Загрузка бэкграунда
bac_background = background_add('resurs\background\back_background.png',false,false);
//Загрузка бэкграунда, из которого будем создавать тайлы
bac_tiles = background_add('resurs\background\back_tiles.png',false,false);
//Загрузка звуков
snd_bullet_01=sound_add('resurs\sounds\snd_bullet_01.wav',0,1);
9. Теперь, чтобы использовать какой-либо ресурс, мы будем обращаться к переменным из объекта
obj_load_resurs. Для начала добавим объект
obj_player. В событие "
создание" ("
Create") добавляем код
//Назначение объекту спрайта
sprite_index = obj_load_resurs.sp_player;
Этот код назначит объекту
obj_player спрайт, загруженный в начале игры объектом
obj_load_resurs. Обратите внимание, мы обращаемся не к имени файла, а к переменной (в начале стоит
sp_, а не
spr_ – я специально написал разные названия переменной и файла, чтобы было видно, что это не одно и то же).
10. Дальше я добавил объекту
obj_player воспроизведение звука при нажатии клавиши "пробел". Добавляем событие "
клавиша нажата - пробел" и в этом событии код:
//Воспроизведение звука
sound_play(obj_load_resurs.snd_bullet_01);
Думаю тут все понятно. Обращение к звуку такое же, как и к спрайту.
11. Теперь займемся бэкграундом. Чаще всего в игре не одна комната, а несколько. И в каждой комнате свой бэкграунд. По этому бэкграунд должен назначаться каким-то объектом, который будет для каждой комнаты свой, или одним объектом, который будет назначать бэкграунд в зависимости от комнаты. Мы сделаем назначение бэкграунда у объекта
obj_player в событии "
создание" ("
Create"). Добавим такой код:
//Назначение бэкграунда для текущей комнаты
background_index= obj_load_resurs.bac_background;
Если в игре будет использоваться только один бэкграунд, можно назначить его сразу после загрузки ресурсов в том же объекте
obj_load_resurs в событии "
создание" ("
Create"). Тогда код будет таким:
//Назначение бэкграунда для текущей комнаты
background_index= bac_background;
Чтобы бэкграунд отображался, в комнате, во вкладке "
Фоны" нужно поставить галочку "
Видим при старте".
12. Создадим еще один объект
obj_gm. Этот объект будет демонстрировать анимацию. В событии "
создание" ("
Create") добавляем код
//Назначение объекту спрайта
sprite_index = obj_load_resurs.sp_gm_strip;
image_speed=0.2; //Скорость проигрывания анимации
Когда мы загружали спрайт
sp_gm_strip в объекте
obj_load_resurs, то указывали количество кадров (3).
Добавляем в комнату объект
obj_gm.
13. Теперь займемся тайлами. В изображении
back_tiles у меня нарисованы 4 квадрата. Оно загружено как бэкграунд. Сделаем из него 4 тайла и добавим их в комнату. Делать мы это будем тоже в событии "
создание" ("
Create") объекта
obj_player, так же как и бэкграунд (это можно делать в любое время и в любом объекте, когда вам будет это нужно).
Добавляем такой код:
//Расставляем тайлы в комнате
tile_add(obj_load_resurs.bac_tiles, 0, 0, 32, 32, 100, 20, 4);
tile_add(obj_load_resurs.bac_tiles, 0, 32, 32, 32, 150, 40, 4);
tile_add(obj_load_resurs.bac_tiles, 32, 0, 32, 32, 200, 20, 4);
tile_add(obj_load_resurs.bac_tiles, 32, 32, 32, 32, 250, 30, 4);
Про функцию добавления тайлов расскажу немного подробнее. Она имеет такой вид:
tile_add(background,left,top,width,height,x,y,depth);Здесь:
Background – бэкграунд, из которого беруться тайлы;
Left – х верхнего левого угла тайла;
Top – y верхнего левого угла тайла;
Width – ширина тайла;
Height – высота тайла;
x,y – координаты точки, куда поставить тайл;
depth – глубина тайла.
P.S.: Тайлы использовать таким образом не всегда удобно. Если нужно их расствить в самом начале игры, тогда, возможно, лучше загружать их не из папки, а использовать их в проекте и расставлять в комнате. Этот способ может пригодиться, например, для создания следов от взрывов, трупов и т.д. в виде тайлов. Или для создания случайным образом разбросанных по комнате декараций, по которым игрок может ходить, например мелких камней и т.п. Для этого может подойти примерно такой код:
//Расставляем тайлы в комнате в случайном месте
tile_add(obj_load_resurs.bac_tiles, 0, 0, 32, 32, random(room_width), random(room_height), 4);
Я добавил этот код тоже в событии "
создание" ("
Create")
объекта obj_player.
В архиве статья и пример.
Для автоматической загрузки спрайтов из папки используйте код и пример из темы
Автоматическая загрузка спрайтов из папки (аналогично можно загружать и другие ресурсы).
Автор статьи: Dva_Kota
07/12/2010