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 |
постоянный участник
Сейчас нет на сайте
| Цитата OpenGOO ( ) Не знаю как у других, но у меня этот код проблема в том, что у него переменная fix неизвестна.
Цитата 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 |
постоянный участник
Сейчас нет на сайте
| Цитата Leyron ( ) А какая например переменная, если мне нужно трение, то "friction"? ты не понял. этим кодом просто меняется один объект с одним коэффициентом трения на другой с другим коэффициентом. а переменная - это, к примеру, угол поворота объекта. а вообще лучше сделать так, как подсказывает OpenGOO
|
|
| |
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 ( ) Как код выглядит? Персонаж - физический объект, так что код не применяю. Просто персонаж сталкивается с кубиком, и куб по законам физики отталкивается?
|
|
| |