저는 Flash 게임을 만들고 있는데, Box2D에서 다각형 모양을 그릴 때 정말 이상한 문제가 발생했습니다.Box2D에서 사용자 정의 폴리곤 그리기
여기 내가 사용하는 코드입니다 : vertexArray, 4 개 b2Vec2 정점을 포함하는 유효한 배열이다 볼록 형상을 구성하는
var fixtureDefs:Array = new Array();
...
var fDef:b2FixtureDef = new b2FixtureDef();
fDef.density = 0;
fDef.shape = new b2PolygonShape();
b2PolygonShape(fDef.shape).SetAsArray(vertexArray);
fixtureDefs.push(fDef);
//This gets repeated several times, so that at the end you get a body consisting of several convex shapes.
...
var bD:b2BodyDef = new b2BodyDef();
bD.type = b2Body.b2_staticBody;
bD.position.Set(300/Constants.RATIO,200/Constants.RATIO);
var body:b2Body = Constants.world.CreateBody(bD);
...
for each(var fD:b2FixtureDef in fixtureDefs) {
body.CreateFixture(fD);
}
.
내가 테스트 할 때 문제는, 해당 신체에 대해 충돌이 올바르게 작동하지 않는다는 것입니다. 다른 대부분의 객체 (몸, 사용자 제어 문자)는 몸체가 전혀없는 것처럼 똑바로지나갑니다. 일부 레이 캐스트도 통과합니다.
내가 충분히 가지고있는 한 종류의 시체 (관례 적)가 어떻게 든 시체를 감지하고 그 몸체와 충돌합니다. 특별한 종류의 적들이 시도하는 레이 캐스트 do - 캐릭터가 다각형 뒤에 숨어있을 때 볼 수없는 것처럼 보입니다.
다른 이상한 점 : SetAsArray 대신 SetAsBox 만 사용하면 동일한 코드를 시도 할 때 정확하게 작동합니다.
저는 사용자 정의 ContactListener 클래스를 사용하고 있습니다. 그러나 실현하지 않으면 가능한 한 모든 연락처 필터링을 수행하지 않았습니다.
Flash 9 버전의 Box2D 2.1a를 사용하고 있습니다.
제안 사항? 내가 명백한 것을 놓치고 있거나 (하나님이 금물!) 버그를 발견 했습니까? 당신의 도움을 주셔서 감사합니다!
안드레이
안녕하세요, 오늘 문제가 무엇인지 발견했지만 24 시간 대기로 인해 게시 할 수 없습니다. 어쨌든, 당신은 꽤 많이 못 박았습니다. 내 문제가 반 시계 방향으로 정점을 나열했다. 나는 시계 방향으로 그것들을 입력하려고 노력했다. 그리고 그것은 일했다! 모든 매뉴얼은 그것이 CCW라고 말하지만 "CCW는 z 축이 비행기를 가리키는 오른손 좌표계와 관련이 있습니다. 이것은 시계 방향으로 회전 할 수 있습니다. 좌표 체계 협약 " 누군가 이것을 설명 할 수 있습니까? -Andrey – Andrey