Box2D로 rayCasting에 대한 다양한 튜토리얼을 살펴 보았지만 명확한 예를 보지 못했습니다. box2dweb에 익숙한 사람이 다음과 같은 간단한 기능을 설정하는 방법에 대한 명확한 예를 제공 할 수 있기를 바랍니다.
var myRayCastFunction = function(p1,p2,maxFraction){
//Code here
}
다음과 같이 사용할 수 있다는 아이디어는 다음과 같습니다.
var retVal = myRayCastFunction(p1,p2,maxFraction)
var fixture = retVal.fixture
var point = retVal.point
var normal = retVal.normal
var fraction = retVal.fraction
(이 경우 가장 가까운 교차로를 말하면 단순히 교차로 1 개를 반환하지만 retVel
각 교차로에 대한 이러한 출력 목록이있는 유사한 교차로 를 만드는 방법을 알고 싶습니다. )
RayCasting이 box2D에서 어떻게 작동하는지에 대한 모든 세부 사항을 이해하려고 노력해 왔으며 이것이 사용자 정의 콜백 함수를 만들어야한다는 것을 이해합니다 (제 생각에?).하지만 해당 함수를 어디에 배치해야하는지, 그리고 무엇을 그것도 마찬가지입니다.
현재 프로젝트에 레이 캐스팅을 추가하려고했기 때문에이 질문에 답하기 시작했습니다. 실제로 box2dweb에 몇 가지 버그가 있다는 것을 깨달았습니다. 이 게시물을 복잡하게 만드는 대신 세부 정보로 연결하겠습니다. http://www.iforce2d.net/box2dweb-fixes.txt
다음은 레이 캐스트 콜백을 성공적으로 사용한 방법입니다. 콜백 클래스를 선언하고 ReportFixture 함수를 제공합니다.
var RaycastCallback = function() {
this.m_hit = false;
}
RaycastCallback.prototype.ReportFixture = function(fixture,point,normal,fraction) {
if ( ... not interested in this fixture ... )
return -1;
this.m_hit = true;
this.m_point = point;
this.m_normal = normal;
return fraction;
};
이제 세계 RayCast 함수에 전달할 인스턴스를 만듭니다.
var rayStart = ...;
var rayEnd = ...;
var callback = new RaycastCallback();
world.RayCast(callback, rayStart, rayEnd);
if ( callback.m_hit ) {
... use callback.m_point etc ...
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다