Вторник, 03 Декабря 2024, 20:11

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [148]
Статьи о программах для создания игр, уроки и описания.
Софт [44]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [168]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [133]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Кто вы?
Всего ответов: 24701
Главная » Статьи » Создание игр

Туториал по Extreme Physics #1
В данном туториале я не буду рассказывать как установить ExtremePhysics.
Весь код стабильно работает на версии ExtremePhysics 2.2

Типы Ресурсов

Для начала давайте разберемся, что такое world, body и shape. В первую очередь это типы ресурсов.
Я предлагаю рассмотреть их подробнее:

World - это мир в котором вы создаете все свои физические тела. Миров может быть несколько.
Объекты которые находятся в разных мирах никогда не смогут взаимодействовать друг с
другом. Чаще всего в игре используется только один мир.

Body - это эквивалент объекта в GameMaker. Обычно каждый объект в GameMaker связан с
одним телом.

Shape - это форма которая задается телам (body). Без формы тело бесполезно, и не может
контактировать с другими объектами. Есть всего три типа форм: Квадрат, круг и многоугольник.
Телам можно задать сразу несколько форм.

В EP (Extreme Physics) Есть еще несколько типов ресурсов, но их мы пока не будем рассматривать.

Инициализация EP

Если вы используйте dll библиотеку вместо gex, то перед началом создания физических объектов, и использования EP, вам нужно перенести в проект файл gml (обычно он находится в скачанном вами архиве).
После переноса gml файла вам требуется создать пустую комнату с объектом obj_ctrl, и после нее создать основную для тестов. В объект размещенный в первой комнате вам требуется вписать следующий код:

Код


  //CREATE
  extremephysics_init (); //инициализация
  room_goto_next(); //переход в следующую комнату по завершению инициализации.



Данный код инициализирует dll, который обязательно должен находиться в корневой папке с проектом.

Теперь создадим мир!

Создать мир в EP очень просто:
Теперь давайте перейдем в наш obj_ctrl и создадим переменную, которой присвоим функцию, создающую мир:
Код


  //CREATE
  global.world = ep_world_create();
  /* название переменной может быть любое, но я советую не выпендриваться, и всегда  
  называть мир - world :) Это облегчит вам жизнь в будущем */



Следующим шагом будет добавление настроек миру:

Код


  //CREATE
  ep_world_set_settings (global.world, 1,20,10,0.1,0.5,0,0.5,1);  
  /* это настройки мира по умолчанию.  
  Советую всегда выставлять их именно такими */



Создание статического объекта

Есть два вида тел: статические и динамические . Статические тела могут двигаться, но на их движение не влияют другие тела. На движение динамических тел могут влиять другие тела (даже статические тела). Статические используются для вещей, которые не могут быть перемещены другими телами (например: земля, стены, платформы, которые движутся с одной скоростью).

Давайте теперь создадим статическое тело и объект для него obj_box

Код

  //CREATE
  body = ep_body_create_static (global.world);
  // global.world: идентификатор вашего мира.



Но как я говорил ранее, тело бесполезно без формы.
По этому создадим квадратную форму к нему:

Код

  //туда же
  shape1 = ep_shape_create_box (global.world, body, 32,32,0,0,0,1);
  // global.world: идентификатор мира.
  // body: идентификатор тела.
  // 32,32: размер формы.
  // 0,0,0: относительные координаты фигуры (x, y, rot).
  // 1: плотность коробки (не используется для статических тел).



Следующий шаг - это добавление материала для коробки

Код

  ep_shape_set_material (global.world, body, shape1,0.5,0.4,0,0);
  // 0.5: коэффициент реституции.
  // 0.4: трение.
  // 0: нормальная поверхностная скорость.
  // 0: тангенциальная поверхностная скорость. (What? 0_0)


Теперь зададим коробке правильные координаты:

Код


  ep_body_set_position (global.world, тело, х, у, degtorad (image_angle));
  // х: х координата тела.
  // y: y координата тела.
  // degtorad (image_angle): вращение тела в радианах.



Вот и все! Статическое тело obj_box готово! Теперь этому объекту можно задать любой 32 на 32 спрайт.

Создание динамического тела

Теперь давайте приступим к созданию динамического тела. Для разнообразия это будет круг.
Создадим объект obj_circle
Код
  

  //CREATE
  body = ep_body_create_dynamic (global.world, false);  
  /* Все почти так же как и в случае со статическим  
  объектом. */

  // false: это тело может вращаться. (true - нет)



Вы должны установить центр масс, массу и момент инерции тела, прежде чем сможете его использовать. Самый простой способ сделать это - вызвать ep_body_calculate_mass. Эта функция автоматически вычислит все вышеперечисленные параметры.

Код


  // вызываем эту функцию после добавления фигур:
  ep_body_calculate_mass (global.world, body);



Теперь создадим уже круглую форму для нашего obj_circle

Код


  shape1 = ep_shape_create_circle (global.world, body, 16,0,0,0,1);
  // 16: радиус круга. (умножаем на 2, и получаем x и y этого круга)
  // 0,0,0: относительные координаты фигуры (x, y, rot).
  // 1: плотность круга (не используется для статических тел).



Поздравляю вы прошли через первый (да-да, только первый) круг ада!

Теперь можно расставить объекты по второй комнате:

obj_box - в качестве стен и пола.
obj_circle - в качестве поддающихся физике тел.

Спасибо за то, что прочитали до конца. Желаю вам удачи в изучении EP!

-------

Автор: Core
Категория: Создание игр | Добавил: Core (12 Мая 2020) | Автор: Core
Просмотров: 2026 | Комментарии: 5 | Рейтинг: 5.0/4 |
Теги: ep, GML, Extreme Physics, Физический движок, Game Maker, GMS, тела, физика, gamemaker, программирование, GM, ExtremePhysics 2, Physics, код, Extreme Physics 2, Extreme
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Туториал по Extreme Physics #1», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 5
+3-
3 Hard   (23 Июня 2020 20:54) [Материал]
HardБуде полезно.

+1-
4 GameDev2   (10 Октября 2020 13:49) [Материал]
Кому-то будет полезно.

+3-
2 CUbeB   (25 Мая 2020 00:51) [Материал]
CUbeBСпасибо за статью! Хорошее объяснение ^_^

+5-
1 Raven84   (23 Мая 2020 16:56) [Материал]
Raven84О дааа! Помню пользовался этой библиотекой на GM8 по моему. Даже одну игру с физикой создал на ней. Называлась Toy Tower. Там из детских кубиков нужно было башню построить до определенного уровня. По сути, если разобраться, то библиотека не такая уж и сложная. Нк а потом вышла GMS и там физ.движок Box2D был уже встроен и создавать игры с физикой стало еще проще. Я на нем уже собирал Idolzzz. Эх. Были времена! Спасибо за ностальгию! :)

+1-
5 GWÁLÐ   (19 Октября 2020 12:35) [Материал]
GWÁLÐВремена особо и не кончались, сейчас gms2 это полноценная среда разработки игр и фриланса.

Само собой, для довольно многих игр используется обман. Но, Diablo тоже выключал почти всё, что находилось за экраном (чуть дальше на самом деле, но вот так и было, отойдешь достаточно далеко и монстр останется на том же месте), сейчас можно сделать намного больше на одном экране чем могла себе позволить в своё время Diablo.

Стратегии, это нет, разве что 300 объектов как в Risen Kingdom достаточно, это именно на грани.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Enigma
  • LinCity
  • M.U.G.E.N
  • Lightfeather
  • DevelNext
  • Project Canvas
  • LGCK Builder
  • Construct 3
  • GINCS Studio
  • GameGuru MAX
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг