2016-08-29 13 views
0

box2dでジョイントをレンダリングする方法は?たとえば、グラップルフックを作った場合、スプライトなどがその動きに正確に追従するようにするにはどうすればよいですか?私はジョイントと同じ位置にあるボディを作成しようとしていましたが、実際にジョイントの上に常にたくさん苦労しています。ジョイントをレンダリングしますか? [libGDX/Box2D]

+0

ショー、いくつかのコード – Draz

+0

はHERESに私のロープのクラス、ATMは、私はそのようにそれを持っている距離ジョイントフォームを介して接続された遺体の束チェーンのようなもの、それはクラウドにプレーヤーを接続するロープと思われるものです。これは、box2dのジョイントが吸い込み、最小限の力で叩き始めるために機能しません。 http://pastebin.com/3qQMQ0Xw私はそれがより安定しているかどうかを見るために、単一の大きなセグメントがプレーヤーと天井を接続するようにしたいと思っていました(そして、スプライトをそのボディにレンダリングするだけです)自宅からそうすることはできませんが、うまくいけば私の目標は何かを見てください。 –

+0

ロープで衝突を有効にしますか?はいの場合は、ロープボディの回転ジョイントを使用します。もしそうでなければ、あなたはロープを描くために身体を必要としません。 – Draz

答えて

1

目的のスプライトの原点を回転点(たとえば、ボトム中央)に1回設定します。

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

あなたはoyur更新方法であなたの距離合同の2つの アンカーbeweenベクトルの角度を決定します。ローカルアンカーをワールドポイントに変換する必要があるかもしれないことに注意してください。

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

、あなたは位置と角度を設定します。あなたがこれまでに得たもの

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

私は試しましたが、psriteが回転しないので、回転に何か間違っているようです。ワールドポイントに変換するとどういう意味ですか? –

+0

体のアンカーポイントをローカル座標(Body Centerを基準)に設定します。 Player-Bodyからceiling-Bodyへのベクトルを取得するには、ローカルデータをワールドデータに変換する必要があります。このように:Playerbody.getWorldPoint(Joint.getLocalAnchorA)とceilingbody.getWorldPoint(Joint.getLocalAnchorB) – Draz

+0

これはちょっと今働いているのですが、それは正しい方法ですが、その速いスピードです。多分PPMと関係があります値段はわかりません。すべての助けをありがとう! –

関連する問題