2016-10-31 6 views
0

iがDynamicBody 「本体」とStaticBody 「アンカー」「ピボットジョイント点」から、その関節と本体の周り「ピボット点」を回すと完全作動することができる(位置2)を有します。Box2D本体の動的なピボットポイントを動的に回転させますか? libGDX BOX2Dで

enter image description here

Body body = Box2DUtil.addRectangle(BodyDef.BodyType.DynamicBody); 
Body anchor = Box2DUtil.addRectangle(BodyDef.BodyType.StaticBody); 

RevoluteJointDef revoluteJointDef = new RevoluteJointDef(); 
revoluteJointDef.initialize(anchor, body, anchor.getWorldCenter()); 
world.createJoint(revoluteJointDef); 

しかし、私は体が下へ[OK]を回しているシミュレーションが実行されている場合、spesific角度に「身体」を回転させ、重力= 10などしたいです。私は

float myNewAngle = 0; 
body.setType(BodyDef.BodyType.StaticBody);//for not effected from gravity 
body.setTransform(body.getPosition(), lastAngle * MathUtils.degreesToRadians); 

を私はそれが絵(位置1)に示すように、「myNewAngle」の位置に体を回したいボタンをクリックすると私の問題は、私の「身体」は、私が欲しいその起源(位置3)回っですそれは私があまりにも「モーター」でそれを行うことができない私は「body.setTransform(anchor.getPosition()」が、その働いていないを設定し、「ピボットポイント」。aroud回す。

どのように私は「体を回すことができます"ピボットポイント"の周りを動かす?

+0

(擬似コード)によってbodyvfixed周り度回転します。あなたは何を回転させたいのですか?身体の角度、またはその全体の位置? – pingul

+0

@pingul "ピボットポイント"を持つボディの角度を変更したいのですが、ボディを "ピボットポイント"の周りで回転させたいので、どのようなコードにする必要がありますか? – MarsPeople

答えて

0

ピボットポイントに対してその位置を回転させる必要があります。 fixedbodyという点があり、これらにはワールド空間座標.worldCoordinateがあるとします。あなたが固定フレームへの参照のフレームを変更し、そこに回転を行う必要があり

pos = body.worldCoordinate() - fixed.worldCoordinate(); 
rotated_pos = rotateVector(pos, v); 
body.setWorldCoordinate(rotated_pos); 
関連する問題