Отправляет email-рассылки с помощью сервиса Sendsay

Программирование в game maker

  Все выпуски  

Программирование в game maker


 

Программирование в Game Maker
Выпуск 4

 
 

Мышь и курсор в играх.

 
 

Приветствую вас, дорогие читатели!

     Сегодня мы поговорим о полезности мыши в играх, т.е. рассмотрим некоторые моменты в играх, где главным образом фигурирует мышь.
     Все примеры рассматриваются в седьмой версии Game Maker, могут некорректно работать в прошлых версиях!!!
     Вот список того, что мы сегодня рассмотрим:

     Прежде чем начать перейдите в расширенный режим для использования полной функциональности Game Maker - это делается пометкой пункта "Advanced Mode" в меню "File".
     Всё должно выглядеть так, как показано на этом рисунке:


Рисунок 1

Курсор в виде изображения и к чему это приводит.

     Вообще-то желательно использовать спрайты вместо стандартного курсора, ведь всё же мы создаем игры, а не какие-нибудь офисные программки.
     Настоятельно не рекомендуется пользоваться функцией "set_cursor" из стандартной lib библиотеки, т.к. она иногда приводит к не корректной работе самой игры.
     Используйте простой метод создания собственных курсоров (описан ниже): создание спрайта и установка движения на координаты мыши, а сам стандартный курсор скрывать через глобальные настройки игры.

Стрельба в down-top шутерах.

     Задача здесь такая: сделать персонажа и заставить его стрелять в строго указанном направлении.
     Для этого создаем спрайты курсора, персонажа, пули.
     Спрайт курсора:
     Создаем и рисуем любой спрайт курсора, желательно чтобы он имел вид прицела.


Рисунок 2

     Рассмотрим то, что я сделал:
     Присвоил имя "Cursor(S)" для того чтобы было удобнее ориентироваться в спрайтах. (S) означает принадлежность к спрайту, в самом объекте я укажу имя "Cursor", что очень удобно.
     Поставил метку в поле "Transparent" для создания прозрачности спрайта некоторой области спрайта.
     Нажал на кнопочку "center" чтобы пули летели через центр спрайта, а не через его край. Ведь для этого мы и рисуем прицел, чтобы можно было точно указать направление полета пули.
     Более нам ничего не требуется менять, жмем "OK".
     Спрайт персонажа:
     Делаем примерно тоже самое, только более всё упрощенно:


Рисунок 3

     На рисунке 2 я показал, как примерно и достаточно должен быть показан герой. Графикой мы пока можем не заниматься, а просто укажем круглый или любой другой спрайт на ваше усмотрение.
     Присваиваем ему имя по тому же принципу: Hero(S) и обязательно жмем на кнопку "center" - оттуда у нас будут лететь пули.
     Спрайт пули:
     Со спрайтом пули поступаем таким же образом, что и со спрайтом героя, только спрайт делаем меньшим размером и обязательно круглым с пометкой поля "Transparent" и так же указанием центра спрайта.
     Вот так сделал я:


Рисунок 4

     Приступаем к созданию объектов игры:
     Объект курсора:
     Создаем объект.
     Называем его "Cursor".
     Присваиваем ему спрайт "Cursor(S)".
     Помечаем поле "visible".
     Устанавливаем значение "Depth" равным -100 (или любое другое отрицательное значение, главное, чтобы оно было меньше чем у всех других объектов), что дает этому объекту быть выше всех других объектов, не скрываясь за ними.
     В поле "Events" ставим события создания (Create) и движения (Step), выбирая их, нажимая на кнопку "Add events".
     У вас должно получиться вот так:


Рисунок 5

     В каждом из них прописываем такой код:

 move to position (mouse_x,mouse_y)
     Он осуществляет движение объекта курсора на стандартный курсор мыши.
     Жмем "ОК".
     При создании игр важную роль играет частое тестирование. Для этого создаем любую комнату и ставим туда наш объект курсора.
     Запускаем игру и видим: спрайт перемещается на стандартный курсор, это мы и хотели, только нужно убрать сам стандартный курсор. Для этого выходим из игры и заходим в глобальные настройки самой игры "Global Game Settings". Заходим на закладку "Graphics" (если она у вас сразу не откроется) и убираем галочку с поля "Display the cursor" (рисунок 6). Жмем "ОК" и запускаем игру, наш курсор полностью готов.


Рисунок 6

     Объект героя:
     Создаем объект.
     Называем его "Hero".
     Присваиваем ему спрайт "Hero(S)".
     Помечаем поле "visible".
     Устанавливаем значение "Depth" равным 0.
     В поле "Events" создаём лишь одно событие: "Global Left Button".
     У вас должно получиться вот так:


Рисунок 7

     Вписываем туда такой код:

 instance_create(Hero.x,Hero.y,Bullet)
     Этот код позволяет создать объекты пуль на объекте героя.
     Более нам ничего делать с героем не требуется, только ставим его в комнату (в требуемое нам место, желательно в центре). Запускаем игру и видим, что если есть объект героя, то всё сделано правильно. Можно попробовать кликнуть левой кнопкой мыши, тогда мы увидим пули на герое. Они не летят, просто стоят. Приступаем к работе над пулями.
     Объект пули:
     Создаем объект.
     Называем его "Bullet".
     Присваиваем ему спрайт "Bullet(S)".
     Помечаем поле "visible".
     Устанавливаем значение "Depth" равным -50.
     В поле "Events" создаём событие создания (Create).
     У вас должно получиться вот так:


Рисунок 8

     В нем указываем такую строчку кода:

 move_towards_point(Cursor.x,Cursor.y,5)
     Теперь все пули летят со скоростью "5" в направлении курсора. Этот объект не нужно ставить в комнату игры, т.к. он сам создается. Запускаем игру. Всё работает, как планировалось.
     Самое основное выполнено. Вы теперь можете создать более расширенную версию этого примера: уничтожение пуль при столкновении с объектами или при выходе из комнаты, движение героя, таймер для пуль и их перезарядка. Это всё выходит за рассматриваемые рамки, поэтому мы их сегодня рассматривать не будем.
     Скачать этот пример вы можете здесь.

Перетаскивание объектов в квесто подобных играх.

     Все мы сталкивались с таким явлением, как перетаскивание объектов с помощью мыши. Здесь мы рассмотрим упрощенный пример этого эффекта.
     Для этого нам потребуется несколько объектов для перетаскивания их по игровой комнате. Сразу предупреждаю, что инвентарь создавать не будем.
     Для этого достаточно создать один объект. В моём примере это объект красного круга (Round(S)).
     Он выглядит так:


Рисунок 9

     Создайте у себя что-нибудь подобное и приступим к созданию самого объекта.
     Объект круга:
     Создаем объект.
     Называем его "Round".
     Присваиваем ему спрайт "Round(S)".
     Помечаем поле "visible".
     В поле "Events" создаём события создания (Create), шага (Step), нажатия левой кнопки мыши (Left pressed), отпускание левой кнопки мыши (Left released).
     У вас должно получиться вот так:


Рисунок 10

     Код события создания (Create):

 global.moveRound=false
     Код события шага (Step):

 if global.moveRound=true
  {
  x=mouse_x
  y=mouse_y
  }
 else
  {
  x=x
  y=y
  }
     Код события нажатия левой кнопки мыши (Left pressed):

 global.moveRound=true
     Код события отпускание левой кнопки мыши (Left released):

 global.moveRound=false
     Переменная global.moveRound имеет два значения, если возвращается значение этой переменной true, то объект начинает движение до тех пор, пока переменная не примет значение false. Для этого используется мышь.
     Далее создаем игровую комнату и добавляем туда этот объект. Запускаем игру и пытаемся мышью перетащить его куда-нибудь, если у вас всё работает, значит, цель этого примера выполнена.
     Скачать этот пример вы можете здесь.

Движение персонажа в RPG или в RTS.

     Здесь мы рассмотрим пример перемещения персонажа в указанную точку.
     Для этого нам понадобится сам персонаж и спрайт точки, в которую мы его отправим при нажатии на левую кнопку мыши и спрайт курсора.
     Создаем спрайт курсора:
     Рисуем спрайт похожий на курсор или прицел.
     Ставим метку "Transparent".
     Делаем активную область в центре курсора.
     У вас должно получиться что-то вроде этого:


Рисунок 11

     Создаем спрайт персонажа:
     Опять же делаем простенький спрайт.
     Вот что у меня вышло:


Рисунок 12

     А теперь немного усложненная задачка: создать спрайт точки, для отправки туда персонажа:
     Рисуем спрайт прицела.
     Делаем любую анимацию. Я выбрал уменьшение-увеличение. Вот так эта анимация выглядит у меня:


Рисунок 13

     Элементарно расставляем настройки спрайта:


Рисунок 14

     Теперь создаем объекты.
     В глобальных настройках убираем показ стандартного курсора и устанавливаем свой:
     Объект курсора создается аналогично всем остальным.
     В поле "Events" ставим события создания (Create) и движения (Step).
     У вас должно получиться вот так:


Рисунок 15

     Код в событии создания пишем такой:

 global.move=true;
 x=mouse_x;
 y=mouse_y;
     Он устанавливает начальные значения для объекта
     А код в событии шага такой:

 x=mouse_x;
 y=mouse_y;
     С помощью него реализуется движение курсора.
     Создаем объект персонажа:
     В поле "Events" ставим события создания (Create), шага (Step) и столкновения с точкой назначения (Collision).
     У вас должно получиться вот так:


Рисунок 16

     Код в событии создания пишем такой:

 global.move=true;
     Код в событии шага будет такой:

 {
  if (global.move==false)
   {
   self.speed=0;
   }
  if (mouse_check_button_pressed(mb_left)==true)
   {
   with (Movepoint) instance_destroy();
   global.move=true;
   instance_create(mouse_x,mouse_y,Movepoint);
   }
  if (instance_exists(Movepoint)) && (global.move==true)
   {
   motion_set(point_direction(self.x,self.y,Movepoint.x,Movepoint.y),2);
   }
 }
     В этом коде описываются условия движения персонажа и создания-уничтожения точки назначения.
     А код в событии столкновения будет выглядеть вот так:

 speed=0
     Он показывает, что при столкновении персонажа с точкой назначения персонаж остановится.
     Последнее что нам осталось сделать - создать объект точки назначения:
     В поле "Events" ставим событие столкновения с объектом персонажа (Collision).
     У вас должно получиться вот так:


Рисунок 17

     Код в событии столкновения будет выглядеть вот так:

 image_speed=0.01;
 global.move=false;
 instance_destroy();
     С его помощью устанавливаем уничтожение точки назначения.
     Создаем комнату и ставим туда объекты курсора и персонажа, после чего запускаем игру и наслаждаемся полученным результатом.
     Скачать этот пример вы можете здесь.

 

Новости сайта mizzystic.narod.ru

 
 

     В ближайшее время планируется легкое изменение структуры сайта, а именно добавление некоторых разделов.
     Планируется создать такие разделы:

  • Лучшие игры, созданные на Game Maker.
  • Раздел конкурсов.
  • Форум.
     Форум был только что создан, заходите, регистрируйтесь.

Адрес форума www.mizzystic.icebb.ru

     На сегодня мы заканчиваем эту рассылку. Ждите новых выпусков.
     А также не забываем заходить на наш сайт: www.mizzystic.narod.ru
     Хороших игр и интересных сюжетов! До новых встреч!


В избранное