이 문제에 대한 답변을 찾으려고했지만 많은 사람들이 원하는 것처럼 raycasting을 사용하지 않는 것 같습니다. 내 게임에 여러 배우가 있는데, 작은 로봇을 타고 순식간에 충돌 회피를 위해 소나 센서처럼 짧은 광선을 던지기를 원합니다.Libgdx Box2d Raycast는 여러 개의 광선을 전송할 수 없습니다.
저는이 액터 각각을 통해 루프를 실행하고 인터셉트 포인트와 법선을 유지하기 위해 전용 Vector2 변수를 사용하여 World에서 자신의 Raycaster를 호출합니다. 하나의 액터 만 있다면 잘 작동 합니다만, 레이 캐스터 함수가 하나의 인스턴스 만 갖고 있고, 이전 Raycaster 호출이 새 Raycaster() 호출을 사용하여 다른 객체에 의해 호출 되더라도 새 호출에 의해 오버라이드 된 것처럼 보입니다. . 따라서 내 목록에있는 마지막 배우 만 실제로 캐스팅 된 레이에서 정보를받습니다.
사람들이보고 한 이전의 문제는 단 하나의 광선에 불과했지만 순서를 정렬하려고했습니다. 너희들은 raycaster가 어떻게 작동하는지에이, 또는 통찰력을 달성하는 방법에 대한 조언이 있다면 그래서 주위에 방법을 알아낼 수
RayCastCallback callback = new RayCastCallback() {
@Override
public float reportRayFixture(Fixture fixture, Vector2 point, Vector2 normal, float fraction)
{
ColP = point;
System.out.println("\nColpoint: "+ ColP.x+","+ColP.y+"with "+Type);
SurfNormal = normal;
dist = 1*fraction;
return 1;
}
}; Parent.world.rayCast(callback,p1,p2);
: 여기
배우 중 하나 내부 raycasting 콜백입니다 이전 전화를 다시 작성하면 크게 감사하겠습니다.
다른 반환 값을 사용해야 할 필요가 있습니까? 소스 코드 주석은 다음과 같이 말합니다 : "여러분은 float을 반환하여 레이 캐스팅이 어떻게 진행되는지 제어합니다 : 반환 -1 :이 조명기를 무시하고 계속하십시오; 0을 반환하십시오 : 레이 캐스트를 끝내십시오; 광선을 잘라내어 계속하십시오. "(여기에 맞게 편집 된 구두점 및 구두점 포함). –
이것은 첫 번째 물체보다 더 많이 투과하는 한 개의 광선에만 영향을주기 때문에 그렇게 생각하지 않습니다. 저는 각 광선에 대해 0을 반환하고, 그것이 도달하는 곳에 짧은 법선 벡터를 그립니다. 그러나 실제로 광선을 투사하는 4 개의 광선 중 하나만이 실제로 반환됩니다. –