Как осуществить притяжение частиц на LibGDX Box2D? Пишу игру, используя физический движок box2d, который является частью libGDX. Необходимо сделать симуляцию того, что частицы притягиваются друг к другу по закону всемирного тяготения. Я решил решить эту задачу следующим образом: между каждыми двумя частицами я создаю DistanceJoint. Они притягиваются, но не так как надо. По закону всемирного тяготения, чем БОЛЬШЕ расстояние, тем МЕНЬШЕ сила притяжения. Но в моём случае происходит с точностью да наоборот. Теперь вопрос, как сделать так, чтобы сила притяжения частиц зависела обратно пропорционально? Может быть нужно использовать другой Joint, или какой-нибудь совершенно другой класс?

21 Авг 2019 в 06:18
190 +1
0
Ответы
1

Для того чтобы реализовать симуляцию притяжения частиц друг к другу по закону всемирного тяготения в Box2D, можно воспользоваться методом использования GravityController. GravityController позволяет создавать и настраивать гравитационные поля в мире Box2D.

Ниже приведен пример кода, который демонстрирует, как можно использовать GravityController для создания притяжения между частицами.

// Создаем GravityController
GravityController gravityController = new GravityController(world);
// Устанавливаем параметры силы гравитации
gravityController.setGravity(0, -10); // Устанавливаем вертикально направленную гравитацию
// Добавляем частицы в GravityController
gravityController.addBody(body1);
gravityController.addBody(body2);
// Устанавливаем взаимное воздействие частиц
gravityController.addInstance(body1, body2, 1, 1); // Параметры (body1, body2, сила притяжения, дистанция)
// Добавляем GravityController в мир Box2D
world.addController(gravityController);

В этом примере мы создаем GravityController, устанавливаем параметры гравитации, добавляем частицы и устанавливаем взаимное притяжение между ними. После этого добавляем GravityController в мир Box2D.

Таким образом, вы можете использовать GravityController для реализации притяжения частиц друг к другу по закону всемирного тяготения в Box2D. Надеюсь, это поможет вам решить задачу.

20 Апр в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 887 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир