2013-08-20 51 views
1

考慮我是通過手指觸摸和拖動移動拉總線。路不直。所以如果我沿着道路移動我的手指。公共汽車應該隨着手指一起轉動,並在轉彎時需要一些轉動。Libgdx適用於演員手指觸摸/移動方向

首先找到演員和接觸點之間的距離,如果它小於 我只是設置巴士(演員)的位置觸摸點的位置。

現在它感覺像我拖着巴士。

現在我必須處理旋轉。

我可以對接觸點應用強制嗎? 我可以處理對接觸點演員的旋轉...

在我的腦海

簡單的邏輯是拖手指指繪製line..now我有相匹配的演員拖線的中線..

請給我關於處理公共汽車輪換的暗示。 謝謝,

回答

1

這聽起來對我來說就像你只是想讓公共汽車遵循像普通公共汽車的路徑將遵循道路。

您可以通過對其施加扭矩來旋轉身體。這意味着你將使用applyForce(...)而不是使用質量中心作爲施加力的點。

但是你不想施加一個力量並讓它朝着某個目標點移動,因爲那樣看起來很奇怪,而且你需要一些特殊的物理處理方式來實現汽車物理現實(對於自上而下,你可以看到這裏http://www.iforce2d.net/b2dtut/top-down-car)。

更好的是自己計算路徑並計算該路徑上不同點之間的角度。然後使用body.setTransform(...)手動設置總線的位置和旋轉。如果你沒有任何物理引擎,那麼你也會這樣做。

+0

感謝您的回覆, 是的,你有我的問題。我可以使用Box2D,但我不知道如何在LibGdx中添加主體。所以只需使用actor並手動計算。 你上面提到過使用body.setTransform(..),我可以將它應用於簡單的演員??。 或者我必須把我的演員(巴士)當成別的東西。 –

+1

演員與Box2D無關。它們是scene2d API的一部分,而不是Box2D。除非你實現了一個自定義的「PhysicsActor」(它擴展了Actor並將Body作爲一個屬性)。例如,這個新的Actortype將覆蓋translate(x,y),並通過在body上使用setTransform(...)將其委託給body。這個新的Actortype將成爲您在scene2d和box2d之間的橋樑。 如果你還沒有爲你的公交車使用車身,那麼到目前爲止忘掉一切,而不是在Actor上使用setTransform使用setPosition/setRotation。 – noone