Понедельник, 23 Декабря 2024, 01:47

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Game Maker Studio. Встроенная физика(box2d).Помогите
LeyronДата: Воскресенье, 01 Июня 2014, 17:20 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем, привет. Использую встроенную физику в Game Maker Studio(box2d) и такой вопрос: можно ли в ходе игры менять физ. свойства объекта(например трение или тяжесть)? cry

Сообщение отредактировал 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 не робит cry

Добавлено (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 ()
Как код выглядит?

Персонаж - физический объект, так что код не применяю. Просто персонаж сталкивается с кубиком, и куб по законам физики отталкивается?
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг