2016-10-31 8 views
0

가 나는 DynamicBody에게"피봇 조인트 점"에서 "본체" 및 StaticBody "앵커"과 관절을 가지고 신체 주위 "피봇 점" 선회 완벽 (위치 2)가 작동 할 .Box2D 바디가 동적으로 피벗 점을 뒤집습니까? libGDX Box2D의에서는

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); 

enter image description here

하지만 난 시뮬레이션 실행 중력 = 10 등 몸이 OK 아래쪽으로 회전하면, 각 spesific 위해 "본체"회전 할. 내가 버튼을 클릭하면이 그림에 나타낸 바와 같이 나는 (위치 1) "myNewAngle"위치로 몸을 돌려 원하는

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

내 문제는 내 "몸"의 기원 주위를 선회입니다 (위치 3) 내가 원하는 이 아루 ​​"피벗 포인트"설정 내가 설정 "body.setTransform (anchor.getPosition()"하지만하지했다. 나도 "모터"와 함께 할 수 없습니다. 내가 켤 수있는 방법

"몸 ""피벗 포인트 "다이나믹?

+0

에 의해 bodyvfixed 주변도 회전. 회전하려는 것은 무엇입니까? 신체의 각 또는 전체 위치? – pingul

+0

@pingul "피벗 포인트"가있는 바디의 각도를 변경하고 싶지만 코드가 있어야하는 "피벗 포인트"주위에서 몸체를 돌리고 싶습니까? – MarsPeople

답변

0

피벗 포인트를 기준으로 위치를 회전해야합니다. 우리가 점 fixed, body을 가지고 있고, 이것들이 약간의 세계 공간 좌표 .worldCoordinate을 가지고 있다고합시다. 당신은 (의사 코드) 당신은 고정 프레임에 대한 참조 프레임을 변경 한 다음이 회전을 할 필요가

pos = body.worldCoordinate() - fixed.worldCoordinate(); 
rotated_pos = rotateVector(pos, v); 
body.setWorldCoordinate(rotated_pos);