簡體   English   中英

Java Libgdx-Box2d set使用關節轉換多個實體

[英]Java Libgdx - Box2d setTransform multiple bodies with joints

我有一組身體,並附有一些關節(輪式關節,棱柱形關節,旋轉關節)

我正在嘗試使用setTransform方法將那組身體移動到一個位置

我決定只將一個身體移動到該位置,而其他身體則由於關節而應跟隨。

我得到一個奇怪的結果,身體開始滾動,移動到無處,一個真正的奇怪結果,這是一些要解釋的圖像:

在此處輸入圖片說明

如何使用setTransform將連接關節的多個實體移動到一個位置?

注意:從A點到B點(移動中)沒有障礙物穿過物體

從box2d setTransform()參考:

設置物體原點和旋轉的位置。 這會中斷任何接觸並喚醒其他物體。 操縱身體的變形可能會導致非身體行為。

我認為問題只是您嘗試移動身體的機制,而setTransform不是正確的方法。

而不是考慮使用

void com.badlogic.gdx.physics.box2d.Body.setLinearVelocity(Vector2 v)

您可以將v計算為身體終點和起點的減法。 當物體到達目標時,應處理停止物體(通過將其速度調零)。

請注意, setLinearVelocity不取決於您的重力


第二種解決方案是將setTransform設置為此“關節組”中的所有物體。 您可以遍歷實體並根據其起始位置和目標矢量移動它們

for(Body body : jointGroup)
{
    body.setTransform(body.getPosition.x - someX, ...)
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM