2013-08-19 1 views
2

Я прошел через wiki/учебник libGdx, но я не нашел примера, чтобы использовать изображение или актер в качестве физического тела. В моей игре я добавляю актера на сцену. Но я хочу добавить этого актера или спрайт-изображение в физическое тело.libGdx Как использовать изображения или актер как тело

Я должен перетащить этого актера и даже хочу обнаружить столкновение с другими телами.

пожалуйста, дайте мне ссылку, если у вас есть.

Спасибо

+0

@VikalpJain Это просто неправильно. scene2d.ui для UI только. scene2d - сценарий 2d, который также можно использовать с физическими объектами, использующими box2d, и делался много раз раньше. – noone

ответ

6

Это немного сложно. Вы не используете изображение или актер в качестве физического тела.

Вам понадобится реализовать что-то вроде нового «PhysicsActor», который расширяет актер. Этот физический актер будет иметь тело как свойство и станет мостом между вашей сценой libgdx и миром box2d.

Актер обновит положение, основанное на положении тела (будьте осторожны с преобразованием метра в пиксель). Актер получит вход как щелчок на нем и должен создать (мышь) соединение для тела, которое нужно перетащить и следовать за мышью.

Как вы справляетесь с обработкой изображений, прикрепленных к телу, также является обычным явлением. Вы можете дать каждой PhysicalEntity вручную Sprite, который будет отображаться при вызове draw-call. Или вы будете использовать редактор (например, в RubE, в разделе Contributions на форуме libgdx есть также rube-loader), который позволит вам прикреплять изображения к телам, и вы прочтете их из редактора.

Вы также можете проверить эту ссылку http://www.netthreads.co.uk/2012/04/23/libgdx-box2d-scene2d-bumpers-demo/ Я предполагаю, что это именно то, что вам нужно, но, похоже, оно реализовано немного иначе. Он использовал какую-то архитектуру Layer, чтобы объединить сцену libgdx и мир box2d.

+0

Я думаю о объединении box2d и scene2d в моей следующей игре (если я когда-либо закончу этот: P). В моей текущей игре я использую worldunits вместо пикселей (используя камеры vewport). 1 worldunit будет соответствовать 1 метру box2d. Должен ли я превращаться из метров в пиксели, или я могу использовать эти счетчики для рендеринга всего? – Springrbua

+0

@Springrbua В этом случае нет необходимости в конверсиях, но я бы не советовал вам идти с соотношением 1: 1. Из box2d FAQ: «Вы должны попытаться получить ваши движущиеся объекты в диапазоне от 0,1 до 10 метров». Наличие отношения 1: 1 позволит вашим объектам быть только 10x10 пикселей для обеспечения точных результатов. – noone

+0

Я думаю, что вы пропустили ... Я использую worldunits, размер которого зависит от разрешения экрана. Я говорю, что на КАЖДОМ экране должно быть 50 плиток x и 32 плитки y. Если экран имеет разрешение 500 * 320, каждая плитка составляет 10 пикселей. Является ли экран 1000 * 640 для каждой плитки 20 px ... Итак, 1 метр должен быть 1 worldunit, который составляет 10 пикселей по разрешению 500 * 320 и 20 пикселей по разрешению 1000 * 640. – Springrbua