2017-02-23 1 views
2

이 동그라미 스프라이트의 몸체에 applyAngularImpulse이 있으면 그 중심을 따라 회전합니다. 이것은 내가 원하는 것입니다. 그러나 충돌 마스크 정착물 (녹색)은 스프라이트 중심 대신 자체 중심을 따라 회전합니다. 충돌 마스크와 스프라이트가 동기화되도록 스프라이트의 중심을 따라 어떻게 회전시킬 수 있습니까?Box2d/LibGDX : 스프라이트의 원점을 따라 조명기를 회전시킵니다. 그림

예를 들어, 아래 이미지에서 원이 돌아서고 빨간색 부분이 왼쪽 위를 향하면 녹색 충돌 마스크가 위치 3에 있어야합니다. 그러나 # 2가 발생합니다. 왜 이런 일이 일어나는 지 알지만, 여기서 내가 성취하고자하는 것을 어떻게 성취 할 수 있습니까?

enter image description here

답변

1

는 두기구를 만들어야합니다 - 스프라이트의 크기 중 하나를 (그리고 스프라이트이 고정으로 중앙에 배치)와 두 번째 원의 가장자리 (현재 충돌기구)

로 이동 2 정점

{5, -1, 6, 0, 5, 1, 4, 0} 
,745의 반경 원에 대한 예 - 지금 당신은 그냥 거기에 배치 할 지점을 정의 원의 가장자리에 충돌 고정을 유지해야하는 경우
BodyDef bodyDef; 

... 

Body body = world.createBody(bodyDef); 

FixtureDef circleFixture = new FixtureDef(); 
FixtureDef collisionFixture = new FixtureDef(); 

CircleShape circle = new CircleShape(); 
circle.setRadius(spriteRadius); 
circleFixture.shape = circle; 

//same for collision fixture with proper shape - (0,0) i a center of circle 
float[] vertices = new float[]{x1, y1, x2, y2...}; 

ChainShape chain = new ChainShape(); 
chain.createLoop(vertices); 
fixtureDefs.peek().shape = chain; 

enter image description here

같은 것을 줄 것이다 당신이 원기구의 중심에 스프라이트를 렌더링 할 필요가 물론

enter image description here

처럼 회전 후에는 행동해야

관련 문제