2014-04-04 4 views
0

안녕하세요 저는 프로파일에서 보이는 차량으로 의도 된 box2d 컴파 운드 바디를 가지고 있습니다. 그것이 거꾸로 갈 때 나는 다른 방향 즉 x 플립/플렉스에 직면하고 싶습니다. 이것에 대한 쉬운 방법이 있습니까? 나는 단어 리플렉션의 다른 용도로 인해 많은 거짓 조회수가 있지만 Google에서는 아무것도 찾을 수 없습니다.libgdx box2d 플립 컴파운드 본체

몸을 재현 할 수 있지만 시간이 지나면 삭제/추가해야합니다. 그리고 약간 성가시다. 나는 body.getFixtureList를 시도하고 꼭지점을 설정하지만 메서드는 플래그가 변경되지 않는 목록입니다. 제거를 추가하지 않는다는 의미입니까? 편집하지 않습니까? 화면에 아무 것도 변경되지 않습니다. 내 코드를 다시 확인하지 않으려면 ...

내가 뭔가를 잃어버린거야?

답변

0

정점 변경은 작동하지 않습니다. 그럴 가능성은 당신이 말한 것처럼 시체를 재현하는 것입니다. 그리고 그것을 삭제 한 다음 다시 만들어야하기 때문에 느려질 것이라고 생각하지 마십시오. Box2d는 너무 많은 투쟁을하지 않고도 한 프레임에 100 대의 차량을 만들 수 있습니다.

전체 뒤집기 과정에서 정점 x 구성 요소의 크기를 -1만큼 줄입니다. 그리고 정점의 원점이 중심에 있지 않으면 전체 차량의 x 좌표를 조정해야합니다 (또는 원점을 첫 번째 위치에 올바르게 배치해야합니다).

몸체를 다시 만들 때 원래 몸체의 선형 및 각속도를 저장하는 것이 좋습니다. 그리고 나서 새로운 것을 만들면 새로운 몸체에 그 속도를 적용하십시오. 그렇게하지 않으면 뒤집기를 한 후에 차량을 정지 시키십시오.

+0

getVertex를 사용하여 정점을 getturn하고 재설정하는 것이 작동하지 않습니다. 버텍스 배열을 재구성하고 shape.set (newShape)을하는 것은 효과가있는 것처럼 보입니다. 나는 기원과 관련하여 고심하고있다. – user3473715

+0

나는 그것이 작동하지 않을 것이라고 말했다. 전체 몸체를 삭제하고 플립 된 정점을 사용하여 다시 생성해야합니다. –

+1

몸 전체가 아니라 다시 만드는 것이 필수품입니다. 또한 본체에 두 세트의 조명기를 영구적으로 사용할 수 있으며 현재 방향에 따라 그 중 하나를 비활성화 할 수 있습니다 (비활성 마스크 등을 위해 충돌 마스크 비트 및 밀도를 0으로 설정). 이 작업을 수행하는 경우 ResetMassData를 사용해야합니다. – iforce2d