libGDX で下端にオブジェクトを持つ吊りロープを作成しようとしています。ロープは Box2D の吊りロープのようにする必要があります。
私は多くの調査を行いました.libGDXにはropeJointメソッドがありますが、それを使用してロープを作成する方法は?
助けてください、それは大きな恩恵になります。
libGDX で下端にオブジェクトを持つ吊りロープを作成しようとしています。ロープは Box2D の吊りロープのようにする必要があります。
私は多くの調査を行いました.libGDXにはropeJointメソッドがありますが、それを使用してロープを作成する方法は?
助けてください、それは大きな恩恵になります。
同様の質問 libGDX: Hanging Ropeへの回答から始めました
いくつかのコードを追加して、不足しているコードを追加し、アンカーの問題を修正しました。次のコードは、ターゲットの問題に適していると思います。
BodyDef ropeStartDef = new BodyDef();
int EACH_RING_DISTANCE = 10
ropeStartDef.type = BodyType.StaticBody;
ropeStartDef.position.set(m_camera.viewportWidth/2,m_camera.viewportHeight );
Body ropStartBody = m_world.createBody(ropeStartDef);
PolygonShape ropeStartShape = new PolygonShape();
ropeStartShape.setAsBox(5, 5);
ropStartBody.createFixture(ropeStartShape, 0);
ropeStartShape.dispose();
//----------------------------
RevoluteJointDef jd = new RevoluteJointDef();
Body prevBody = ropStartBody;
int angle = -90;
Vector2 position = ropeStartDef.position;
BodyDef previousbodyDefinition= ropeStartDef;
for(int i=0; i<5; i++)
{
BodyDef bd = new BodyDef();
bd.type = BodyType.DynamicBody;
bd.angle = angle-MathUtils.PI/2;
bd.position.set(position.x + i*MathUtils.cos(angle)*EACH_RING_DISTANCE,
position.y + i*MathUtils.sin(angle)*EACH_RING_DISTANCE);
Body body = m_world.createBody(bd);
FixtureDef eachRingFD;
eachRingFD = new FixtureDef();
CircleShape chainCircleshape =new CircleShape();
chainCircleshape.setRadius(4);
eachRingFD.density = 2;
eachRingFD.shape =chainCircleshape;
body.createFixture(eachRingFD);
Vector2 anchor = new Vector2(bd.position.x - MathUtils.cos(angle)*EACH_RING_DISTANCE/2f,
bd.position.y - MathUtils.sin(angle)*EACH_RING_DISTANCE/2f);
jd.initialize(prevBody, body, anchor);
//-----------------------added based on http://www.emanueleferonato.com/2009/10/05/basic-box2d-rope/
RevoluteJointDef joint = new RevoluteJointDef();
joint.initialize(prevBody, body, anchor);
m_world.createJoint(joint);
//------------------------end of added
prevBody = body;
previousbodyDefinition = bd;
}