В данном туториале я не буду рассказывать как установить 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_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
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Туториал по Extreme Physics #1», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
О дааа! Помню пользовался этой библиотекой на GM8 по моему. Даже одну игру с физикой создал на ней. Называлась Toy Tower. Там из детских кубиков нужно было башню построить до определенного уровня. По сути, если разобраться, то библиотека не такая уж и сложная. Нк а потом вышла GMS и там физ.движок Box2D был уже встроен и создавать игры с физикой стало еще проще. Я на нем уже собирал Idolzzz. Эх. Были времена! Спасибо за ностальгию!
Времена особо и не кончались, сейчас gms2 это полноценная среда разработки игр и фриланса.
Само собой, для довольно многих игр используется обман. Но, Diablo тоже выключал почти всё, что находилось за экраном (чуть дальше на самом деле, но вот так и было, отойдешь достаточно далеко и монстр останется на том же месте), сейчас можно сделать намного больше на одном экране чем могла себе позволить в своё время Diablo.
Стратегии, это нет, разве что 300 объектов как в Risen Kingdom достаточно, это именно на грани.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]