我正在使用RayCastCallback接口ıfLibGDX。我找不到从射线起点得到最近点的方法。它返回被光线击中的随机灯具。如何获得光线与灯具之间最近的碰撞点?
答案 0 :(得分:1)
听起来你已经拥有了大部分代码,因为你从光线投射中获得了固定装置。你只需要遍历所有由光线投射命中的灯具并记住最接近的灯具。类似的东西:
public class SomeClass {
private World world;
private Vector2 fromPoint;
private Vector2 toPoint;
private Vector2 collisionPoint = new Vector2();
float closestFraction = 1.0f;
// ... rest of code ...
private void calculateCollisionPoint() {
RayCastCallback callback = new RayCastCallback() {
@Override
public float reportRayFixture(Fixture fixture, Vector2 point, Vector2 normal, float fraction) {
if ( fraction < SomeClass.this.closestFraction ) {
SomeClass.this.closestFraction = fraction;
SomeClass.this.collisionPoint.set(point);
}
return 1;
}
};
world.rayCast(callback, fromPoint, toPoint);
}
}