2016-08-29 5 views
0

Как бы вы сделали рендеринг сустава в box2d? Например, если вы должны сделать крючок с захватом, как вы это делаете, чтобы спрайт или что-то точно следовало его движениям? Я пытался создать орган, который находится на том же положении, что и соединения, но Im изо всех сил много на самом деле делает это быть на вершине шва во все времена ..Рендеринг сустава? [libGDX/Box2D]

+0

Показать, что вы получили до сих пор, некоторый код – Draz

+0

Heres моей Веревки класс, банкомат у меня есть это так, чтобы куча тел, соединенных через расстояние суставов формы цепная вещь, которая должна быть веревкой, соединяющей игрока с облаком. Это не работает, потому что суставы в box2d сосать и начинать размахивать при минимальном количестве силы. http://pastebin.com/3qQMQ0Xw Я хотел попытаться сделать так, чтобы один большой сегмент соединял как игрока, так и потолок, чтобы убедиться, что его более стабильный (а затем просто добавьте спрайт в это тело, чтобы его отобразить), Im now away из дома, поэтому не могу попробовать, но, надеюсь, вы видите, что моя цель. –

+0

Вы хотите, чтобы на канате были задействованы коллизии? Если да, то используйте револьверные суставы на теле веревки. Если нет, тогда вам не нужно тело, чтобы нарисовать веревку. – Draz

ответ

1

Все, что вам нужно сделать, это следующее:

Вы устанавливаете источник вашего желаемого спрайта в точку поворота (например, нижний центр) один раз.

sprite.setOrigin(sprite.width()/2, 0); 

Вы определяете угол вектора beween двух якорей вашего расстояния Joint в oyur метод обновления. Обратите внимание, что вам, возможно, придется преобразовать локальные привязки в worldpoints.

float angle = playerAnchorPoint.sub(ceilingAnchorPoint).angle(); 

и установить положение и угол:

sprite.setPosition(playerAnchor.x - sprite.width()/2, playerAnchor.y); 
sprite.setRotation(angle); 
+0

Я попробовал, но, похоже, что-то не так с вращением, потому что psrite просто не вращается. Что вы имеете в виду при переходе к мировым точкам? –

+0

Ну, вы устанавливаете точки привязки своего тела в локальных координатах (относительно Body Center). Чтобы получить вектор от игрока-тела до потолка-тела, вам придется преобразовать локальные данные в мировые данные. Например: Playerbody.getWorldPoint (Joint.getLocalAnchorA) и ceilingbody.getWorldPoint (Joint.getLocalAnchorB) – Draz

+0

Хорошо, теперь я немного работал, кажется, что он вращается правильно, но он идет очень быстро, возможно, что-то связано с PPM значение. Не знаю, как это сделать. Спасибо за помощь! –

Смежные вопросы