2016-08-29 107 views
0

你將如何去渲染box2d中的關節?例如,如果你要製作一個抓鉤,你是如何製作的,以便一個精靈或者其他東西完全跟隨它的運動?我試圖創建一個與關節處於同一位置的身體,但是Im掙扎了很多,實際上使它始終處於關節之上。呈現關節? [libGDX/Box2D]

+0

顯示你得到了什麼,到目前爲止,一些代碼 – Draz

+0

我的繼承人繩類,ATM我這麼說了一堆,通過距離關節形式連接體一個連鎖的東西,這應該是將玩家連接到雲端的繩索。這不起作用,因爲box2d中的關節吸收並以最小的力量開始彈出。 http://pastebin.com/3qQMQ0Xw我想嘗試使它成爲一個單獨的大片段來連接播放器和天花板,以查看它是否更加穩定(然後只需向該主體添加一個精靈來渲染它),我目前已離開從家裏無法嘗試,但希望你看到我的目標是什麼。 –

+0

你想在繩索上啓用碰撞嗎?如果是,那麼在你的繩索身上使用旋轉接頭。如果不是,那麼你不需要身體來畫繩子。 – Draz

回答

1

所有您需要做的事情如下:

您將所需精靈的原點設置爲旋轉點(例如,底部中心)一次。

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

您確定beween在oyur更新方法的距離聯合兩個 錨矢量的角度。請注意,您可能必須將本地錨點轉換爲世界點。

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

並設置位置和角度:

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

我試過了,但我似乎在做旋轉方面的錯誤,因爲psrite只是不旋轉。轉換爲世界點的含義是什麼? –

+0

那麼,你在本地座標(相對於身體中心)設置你的身體的錨點。要從玩家身體到天花板身體獲得矢量,您必須將本地數據轉換爲世界數據。像這樣:Playerbody.getWorldPoint(Joint.getLocalAnchorA)和ceilingbody.getWorldPoint(Joint.getLocalAnchorB) – Draz

+0

好吧我現在有點工作了,它似乎正在轉向正確的方式,但它的超級快,也許與PPM有關價值..我想不明白。感謝所有的幫助! –