| Game Maker Studio. Встроенная физика(box2d).Помогите | 
|  | 
| 
| Leyron | Дата: Воскресенье, 01 Июня 2014, 17:20 | Сообщение # 1 |  |   был не раз Сейчас нет на сайте | Всем, привет. Использую встроенную физику в Game Maker Studio(box2d) и такой вопрос: можно ли в ходе игры менять физ. свойства объекта(например трение или тяжесть)?   
 
 Сообщение отредактировал Leyron - Воскресенье, 01 Июня 2014, 21:56 |  |  |  |  | 
| 
| Raven84 | Дата: Понедельник, 02 Июня 2014, 02:21 | Сообщение # 2 |  |   старожил Сейчас нет на сайте | Leyron, На сколько я знаю,только удалением объекта и пересозданием с новыми свойствами. Правда уже точно не помню. Давно сталкивался с таким же вопросом, но честно проблему так и не решил и пересмотрел ее, реализовав все другим способом. 
 Super Knight Story (в разработке)
 Idolzzz - игра доступна в Steam и Play Market
 Oliver's Adventures in the Fairyland
 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 03:27 | Сообщение # 3 |  |   почти ветеран Сейчас нет на сайте | Можно через код 
 physics_get_friction
 physics_get_density
 physics_get_restitution
 physics_set_friction
 physics_set_density
 physics_set_restitution
 physics_mass_properties
 
 friction - трение
 density - плотность
 restitution - упругость
 mass - масса
 
 get - получить значение
 set - установить значение
 
 Fixtures
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 |  |  |  |  | 
| 
| Raven84 | Дата: Понедельник, 02 Июня 2014, 04:29 | Сообщение # 4 |  |   старожил Сейчас нет на сайте | OpenGOO, Все,что вы написали понятно,но операторы начинающиеся с set можно задавать только при создании Fixture. После создания GMS вам уже не даст ничего поменять.Get работает превосходно. Но он позволяет только получить данные о трении и т.д. 
 Super Knight Story (в разработке)
 Idolzzz - игра доступна в Steam и Play Market
 Oliver's Adventures in the Fairyland
 |  |  |  |  | 
| 
| HaGe | Дата: Понедельник, 02 Июня 2014, 07:14 | Сообщение # 5 |  |   постоянный участник Сейчас нет на сайте | - берем и меняем объект на другой: нубско, но действенно. - самостоятельно делаем две fixture: одну с высоким трением, другую - с низким. и потом в зависимости от ситуации одну из них врубаем, другую вырубаем.
 |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 12:50 | Сообщение # 6 |  |   был не раз Сейчас нет на сайте | Значит только заменой объекта можно добиться этого? Просто пробовал уже замещать, получается не очень...
 Ну всем спасибо кто отписался, всем дал +.
 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 13:05 | Сообщение # 7 |  |   почти ветеран Сейчас нет на сайте | Цитата Raven84 (  ) OpenGOO, Все,что вы написали понятно,но операторы начинающиеся с set можно задавать только при создании Fixture. После создания GMS вам уже не даст ничего поменять.Get работает превосходно. Но он позволяет только получить данные о трении и т.д.
 Не знаю как у других, но у меня этот код
 
 
 Код Mouse Event for Mouse Wheel Up: 
 execute code:
 
 var rest = physics_get_restitution(fix);
 
 if (rest < 1.0) {
 rest += 0.1;
 physics_set_restitution(fix, rest);
 }
 
 
 работает как надо
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 |  |  |  |  | 
| 
| HaGe | Дата: Понедельник, 02 Июня 2014, 13:59 | Сообщение # 8 |  |   постоянный участник Сейчас нет на сайте | проблема в том, что у него переменная fix неизвестна.Цитата OpenGOO (  ) Не знаю как у других, но у меня этот код 
 
 через кнопки делал? если да, то попробуй так заменить:Цитата Leyron (  ) Просто пробовал уже замещать, получается не очень... 
 Код with instance_create(x,y,obj) { var=other.var
 }
 
 instance_destroy()
 obj - объект на который идет замена
 var - переменная, которая копируется из род. объекта
 возможны опечатки.
 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 14:43 | Сообщение # 9 |  |   почти ветеран Сейчас нет на сайте | Цитата HaGe (  ) проблема в том, что у него переменная fix неизвестна.
 В чем проблема сделать например так?
 
 
 Код Create Event: 
 execute code:
 
 var fixture;
 fixture = physics_fixture_create();
 physics_fixture_set_circle_shape(fixture, sprite_height * 0.5);
 physics_fixture_set_density(fixture, 1.0);
 physics_fixture_set_restitution(fixture, 0.5);
 physics_fixture_set_collision_group(fixture, 1);
 fix = physics_fixture_bind(fixture, id);
 physics_fixture_delete(fixture);
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 15:24 | Сообщение # 10 |  |   был не раз Сейчас нет на сайте | Цитата HaGe (  ) var - переменная, которая копируется из род. объекта А какая например переменная, если мне нужно трение, то "friction"?
 
 Добавлено (02.06.2014, 15:10)
 ---------------------------------------------
 
 Цитата OpenGOO (  ) В чем проблема сделать например так? 
 Код
 Create Event:
 
 execute code:
 
 var fixture;
 fixture = physics_fixture_create();
 physics_fixture_set_circle_shape(fixture, sprite_height * 0.5);
 physics_fixture_set_density(fixture, 1.0);
 physics_fixture_set_restitution(fixture, 0.5);
 physics_fixture_set_collision_group(fixture, 1);
 fix = physics_fixture_bind(fixture, id);
 physics_fixture_delete(fixture);
 Restitution работает, а вот friction не робит
  Добавлено (02.06.2014, 15:24)---------------------------------------------
 Хотя возможно, что density не меняется.
 
 
 Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 15:24 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 15:31 | Сообщение # 11 |  |   почти ветеран Сейчас нет на сайте | Между friction и density нет никакой связи. От density зависит только масса. 
 Не забывай показывать свой не рабочий код, а то у нас экстрасенсов тут нет.
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 
 
 Сообщение отредактировал OpenGOO - Понедельник, 02 Июня 2014, 15:35 |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 15:34 | Сообщение # 12 |  |   был не раз Сейчас нет на сайте | Цитата OpenGOO (  ) Между friction и density нет никакой связи. От density зависит только масса. Так ведь чем тяжелее объект тем не охотнее он ездит по полу.
 
 
 Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 15:43 |  |  |  |  | 
| 
| HaGe | Дата: Понедельник, 02 Июня 2014, 15:45 | Сообщение # 13 |  |   постоянный участник Сейчас нет на сайте | ты не понял. этим кодом просто меняется один объект с одним коэффициентом трения на другой с другим коэффициентом. а переменная - это, к примеру, угол поворота объекта. а вообще лучше сделать так, как подсказывает OpenGOOЦитата Leyron (  ) А какая например переменная, если мне нужно трение, то "friction"?  |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 15:48 | Сообщение # 14 |  |   был не раз Сейчас нет на сайте | Цитата HaGe (  ) вообще лучше сделать так, как подсказывает OpenGOOЯ так сделал, но вот что-то не меняется, кубик как ездил плохо по полу так и ездит.
 Я хотел сделать, чтобы кубик превращался в ледяной кубик и начинал лучше скользить по поверхностям.
 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 16:04 | Сообщение # 15 |  |   почти ветеран Сейчас нет на сайте | Цитата Leyron (  ) Так ведь чем тяжелее объект тем не охотнее он скользит по полу.
 Сила трения действует на физический объект, в независимости от его массы.
 
 
 Цитата Я хотел сделать, чтобы кубик превращался в ледяной кубик и начинал лучше скользить по поверхностям.
 ты какой коэффициент трения выставляешь?
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 
 
 Сообщение отредактировал OpenGOO - Понедельник, 02 Июня 2014, 16:30 |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 16:54 | Сообщение # 16 |  |   был не раз Сейчас нет на сайте | Цитата OpenGOO (  ) ты какой коэффициент трения выставляешь? 0, когда он в лед превращается
 
 
 Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 16:54 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 16:59 | Сообщение # 17 |  |   почти ветеран Сейчас нет на сайте | Цитата Leyron (  ) 0, когда он в лед превращается
 Тогда вопрос: Как ты его двигаешь?
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 17:01 | Сообщение # 18 |  |   был не раз Сейчас нет на сайте | Цитата OpenGOO (  ) Тогда вопрос: Как ты его двигаешь? Толкаю персонажем!
 
 
 Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 17:02 |  |  |  |  | 
| 
| OpenGOO | Дата: Понедельник, 02 Июня 2014, 17:22 | Сообщение # 19 |  |   почти ветеран Сейчас нет на сайте | Цитата Leyron (  ) Толкаю персонажем!Как код выглядит?
 
 Мои проекты:
 - Свободный и открытый клон World Of Goo
 - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
 
 [GameMaker: Studio v1.4.9999]
 |  |  |  |  | 
| 
| Leyron | Дата: Понедельник, 02 Июня 2014, 17:37 | Сообщение # 20 |  |   был не раз Сейчас нет на сайте | Цитата OpenGOO (  ) Как код выглядит? Персонаж - физический объект, так что код не применяю. Просто персонаж сталкивается с кубиком, и куб по законам физики отталкивается?
 |  |  |  |  |