Game Maker - создание игр | HellRoom Games
Январь 22, 2017, 10:55:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Jelly Killer - релиз!
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Обучение Extreme Physics. Первый урок  (Прочитано 9932 раз)
0 Пользователей и 1 Гость смотрят эту тему.
lucheus
Free Bird
«Старожил форума»
******

Репутация: 81
Offline Offline

Пол: Мужской
Russian Federation Russian Federation

Награды:
500 сообщений!За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Деятельность: Игростроение, дизайн, музыка, ролики и т.п
Сообщений: 772

Подскажу рок на любой вкус :3


« : Январь 27, 2012, 07:46:28 »

Обучение Extreme Physics. Первый урок
Итак, всем привет. В последнее время все больше и больше накапливается потребность к использованию физики в играх. Спрашивал людей на форуме, но оказалось что всего лишь несколько людей знают физику в Game Maker. Я решил исправить это. Из всех я выбрал Extreme Physic (EP), т.к. она самая емкая для использования.

В этом уроке мы пройдем самую корочку EP, но и это нам даст уже многое...
Я буду использовать 2.2 версию. Не забывайте, когда создадите новый файл игры, выбрать EP в Extension Package.

Приступим. Прежде всего нужно знать что в EP есть два типа объектов: статический (static) и динамический (dynamic). Статический объект неподвижен, то есть составляет твердую основу, а динамический тот который воздействован разным силам и производит движение на экране. Например, пол в вашем доме можно приставить статическим обьектом, а кружку падающую на пол (необязательно падающию), это динамический объект.

Для удобства мы инициируем свои дополнительные константы
Добавить ресурс => Определить константы
Там пишем:

Имя: colide1a Переменная: 1;
Имя: colide1b Переменная: 1;
Имя: grav Переменная: 0.4

И вот мы загружаем два спрайта: статического и динамического объектов и соответствующе называем их: static и dynamic. Центрируем спрайты. Пусть спрайт стат. обьекта будет квадрат, а дин. кружок.
Создаем обьект и называем его system
Код: (create)
global.world=ep_world_create() // Инициируем физический мир, нужно писать это всегда // global.world - пременная нашего мира
ep_world_set_settings(global.world,1,20,10,0.1,0.5,0,0.5,1); // Устанавливаем глобальные настройки для мира
Код: (end step)

ep_world_update_contacts(global.world); // Для столкновений в физическом мире
ep_world_simulate_step(global.world); // Что бы "Время не остановилось"
Создаем два скрипта. Один называем physics_object_set, а второй physics_object_update
Код: (В physics_object_set пишем:)
ep_body_set_position(global.world,argument0,x,y,degtorad(image_angle));

Код: (physics_object_update пишем:)
if !ep_body_is_sleeping(global.world,argument0) {
x = ep_body_get_x(global.world,argument0);
y = ep_body_get_y(global.world,argument0);
image_angle = radtodeg(ep_body_get_rot(global.world,argument0));
}

Создаем два объекта: static и dynamic и присваиваем им свои спрайты.

Выбираем обьектstatic
Код: (create)
body = ep_body_create_static(global.world); // Открыто заявляем что это статический объект в нашем мире
shape1 = ep_shape_create_box(global.world,body,sprite_width,sprite_height,0,0,0,1); // Делаем ему квадратную маску размерами своего спрайта
ep_shape_set_collision(global.world,body,shape1,collide1a,collide1b,0); // Пишем о столкновениях с другими объектами
ep_shape_set_material(global.world,body,shape1,0.4,0.4,0,0); // Устанавливаем его характеристики
physics_object_set(body); // Наш скрипт
Код: (destroy)

ep_body_destroy(global.world,body);// Стандартная функция удаления из "мира физического"
В обьекте dynamic
Код: (create)
body = ep_body_create_dynamic(global.world,false); // Динаический объект
shape1 = ep_shape_create_circle(global.world,body,sprite_height/2,0,0,0,1); // Но только теперь это круглая маска размера спрайта
ep_shape_set_collision(global.world,body,shape1,collide1a,collide1b,0); // Столкновения
ep_shape_set_material(global.world,body,shape1,0.4,0.4,0,0); // Характеристики
ep_body_calculate_mass(global.world,body); // Автоподсчет массы и определение доп. характеристик
ep_body_set_gravity(global.world,body,0,grav); // Устанавливаем гравитацию для объекта

physics_object_set(body);
Код: (end step)
physics_object_update(body);

Снова открываем объект system
Код: (Glob Left Button)
instance_create(mouse_x,mouse_y,dynamic) // Что бы мы могли проверить

Расставляем объекты в комнате, не забывая что первым ставим в комнату объект system, иначе могут быть проблемы с global.world


Мы получили простую физику шариков и ознакомились с основными функциями Extreme Physic


* firstEP.gmk (14.44 Кб - загружено 544 раз.)
« Последнее редактирование: Май 24, 2012, 14:56:25 от lucheus » Записан

Электроника из Китая, поцаны!

Продаю кулоны дракона, посохи душ, кольца всевластия, ожерелья берсерка, знаки рун, глаза Ктулху.
"Глина, из которой ты слеплен, высохла и затвердела, и уже ничто и никто на свете не сумеет пробудить в тебе уснувшего музыканта или поэта, или астронома, который, быть может, жил в тебе когда-то" (с) Антуан де-Сент Экзюпери

Tulpan
Участник
****

Репутация: 43
Offline Offline

Пол: Мужской
Belarus Belarus

Награды:
За постоянность! [10 дней на форуме]
API: Game Maker 8.0 Pro
Деятельность: Лентяй
Сообщений: 239


Glazzz


« Ответ #1 : Январь 28, 2012, 12:19:36 »

Отличная статья!  Надо будет попробовать сделать игру с физикой! 
Записан
Alcatraz
Flight Dream Studio
«Старожил форума»
******

Репутация: 392
Offline Offline

Пол: Мужской
Russian Federation Russian Federation

Награды:
3000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Unity 3D3 место в конкурсе: Адекватные игры #2 [Стимпанк]2 место за игру: Dead Night (Конкурс Золотые Руки)...
API: Unity 3D
Деятельность: GML, C++, C#, Java Script, PHP, LUA, Pascal ABC
Сообщений: 3396

http://vk.com/alcatraz_rus


WWW
« Ответ #2 : Январь 28, 2012, 12:26:58 »

молодец!    Уважуха
Записан

fair_fire
Новичок
*

Репутация: 0
Offline Offline

Russian Federation Russian Federation

API: Game Maker 8.0 Pro
Сообщений: 3


WWW
« Ответ #3 : Январь 28, 2012, 18:02:11 »

вообще - то не очень я про урок Буржуйский титориал мне показался понятнее
А вот если бы кто ни будь, сделал справку с переводом по функциям http://www.maartenbaert.be/extremephysics/reference/ цены бы такой справке не было бы
Записан

lucheus
Free Bird
«Старожил форума»
******

Репутация: 81
Offline Offline

Пол: Мужской
Russian Federation Russian Federation

Награды:
500 сообщений!За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Деятельность: Игростроение, дизайн, музыка, ролики и т.п
Сообщений: 772

Подскажу рок на любой вкус :3


« Ответ #4 : Январь 29, 2012, 02:52:59 »

вообще - то не очень я про урок Буржуйский титориал мне показался понятнее
А вот если бы кто ни будь, сделал справку с переводом по функциям http://www.maartenbaert.be/extremephysics/reference/ цены бы такой справке не было бы

чего тебе непонятно?
Записан

Электроника из Китая, поцаны!

Продаю кулоны дракона, посохи душ, кольца всевластия, ожерелья берсерка, знаки рун, глаза Ктулху.
"Глина, из которой ты слеплен, высохла и затвердела, и уже ничто и никто на свете не сумеет пробудить в тебе уснувшего музыканта или поэта, или астронома, который, быть может, жил в тебе когда-то" (с) Антуан де-Сент Экзюпери

IGroK_GM
Новичок
*

Репутация: 0
Offline Offline

Russian Federation Russian Federation

API: Game Maker 8.0 Pro
Сообщений: 6


« Ответ #5 : Июнь 26, 2013, 00:55:48 »

хм... вроде добавляю константы, а он всё равно на них жалуется 
Записан
DANTES
Участник
****

Репутация: 44
Offline Offline

Пол: Мужской
Russian Federation Russian Federation

Награды:
За постоянность!
API: Game Maker 8.0 Pro
Деятельность: Программист
Сообщений: 189


Red-line Community


WWW
« Ответ #6 : Июнь 26, 2013, 10:36:22 »

вообще - то не очень я про урок Буржуйский титориал мне показался понятнее
А вот если бы кто ни будь, сделал справку с переводом по функциям http://www.maartenbaert.be/extremephysics/reference/ цены бы такой справке не было бы

Я делал на этот счёт уроки:
1 урок http://forum.hellroom.ru/index.php?topic=15167.msg184690#msg184690
2 урок http://forum.hellroom.ru/index.php?topic=15176.msg184991#msg184991
3 урок http://forum.hellroom.ru/index.php?topic=15181.msg185201#msg185201
Статьи являются переводом справки.

Добавлено: Июнь 26, 2013, 10:37:29
хм... вроде добавляю константы, а он всё равно на них жалуется 
У меня такая же проблема была с константами. Я за место них сделал обычными переменными.
Записан

 
AnderS
Новичок
*

Репутация: 1
Offline Offline

Пол: Мужской
Russian Federation Russian Federation

API: GameMaker Studio Master
Деятельность: GML, Java
Сообщений: 4


Today is a good day


« Ответ #7 : Август 10, 2014, 11:08:23 »

Просто автор  в константах сделал ошибку  Мда.... (в константы записал colide1a и colide1b, а в коде написал collide1a и collide1b). А так все работает. Мне только интересно где изменять маску dynamic объекта (изменяя маску у спрайтов ничего не происходит).
Записан

Помог? Плюсани в репу!
VSSgames
Посетитель
**

Репутация: 2
Offline Offline

Пол: Мужской
Russian Federation Russian Federation

API: Game Maker 8.0 Pro
Деятельность: Простенькие 2D игры, плтформеры, аркады.
Сообщений: 34


Вам меня не понять, я мыслю иначе.


« Ответ #8 : Март 26, 2016, 21:07:27 »

Киньте ссылку на Extreme Physics.
« Последнее редактирование: Март 26, 2016, 21:38:35 от VSSgames » Записан

__$$$$___$$$$_$$$$__$$$$$$$$____
___$$_____$$___$$___$$______$___
___$$_____$$___$$___$$______$___
___$$_____$$___$$___$$$$$$$$____
___$$_____$$___$$___$$__________
____$$___$$____$$___$$__________
_____$$$$$____$$$$_$$$$_________
Fur
Абы-какой
GM Pro user
*

Репутация: 352
Offline Offline

Пол: Мужской
Belarus Belarus

Награды:
2000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: GameMaker Studio Pro
Деятельность: Процесс активного взаимодействия субъекта с объектом, во время которого субъект удовлетворяет какие-либо свои потребности, достигает цели.
Сообщений: 2561


Лисяток тебе.


« Ответ #9 : Март 26, 2016, 21:19:21 »

Цитировать
Киньте ссылку на Extreme Physics, пожалуйста.
Лови: http://forum.hellroom.ru/index.php?topic=20718.0
Записан

В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях.

На форуме есть поиск, двери мне в редактор! 

Hyperflex
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Vendet | HellRoom Games © 2006-2015 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines