box2d на разных позициях спрайтов на libgdx - PullRequest
0 голосов
/ 13 мая 2018

box2d libgdx test Я создаю класс для DynamicBody шаров и других для стен, каждый класс в соответствии с учебниками, и они работают, шары падают, но проблема в том, что геометрическая форма использование box2d не совпадает со спрайтами. То, что я ищу в Google, связано с тем, что box2d не использует камеру или камеру. vewport

Другое дело, что когда я создаю мир, я использую это

world = new World(new Vector2(0, -9.8f), true);

Я ожидал, что обострение ведет себя как в реальном мире, но выглядит намного медленнее.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Ваш второй вопрос: мир box2d использует метры и килограммы для расчетов.

Таким образом, если вы дадите данные физического мира в пиксельном пространстве, например, импульсный вектор (100px, 100px), мир увидит это как (100m, 100m). Тогда все ведет себя как гигантское и с далекого взгляда. Так что с этой точки зрения это кажется медленным.

Что вам нужно сделать, это определить коэффициент конверсии (например, 100px = 1м) и применять конвертацию везде, где вам нравится, для перемещения экранных объектов с помощью box2d.

РЕДАКТИРОВАТЬ: Смотрите также: https://github.com/libgdx/libgdx/wiki/box2d#creating-a-world: «В Box2D 1 единица = 1 метр.»

0 голосов
/ 13 мая 2018

При создании объектов box2d источник находится в центре, поэтому объект шириной 2 имеет 1 единицу слева от заданной позиции и один справа.Текстуры обычно рисуются с левым нижним углом в позиции, поэтому текстура шириной 2 единицы будет иметь обе единицы справа от позиции.

Чтобы это исправить, вам просто нужно нарисовать изображение на 1/2 ширины влево и на 1/2 высоты внизу.например,

draw(texture, position.x-(width/2),position.y-(height/2));
...