libgdx box2d raycast 最近的灯具

libgdx box2d raycast closest fixture

我正在使用 RayCastCallback 接口 ıf LibGDX。我找不到从射线开始获得最近点的方法。它 returns 被光线击中的随机灯具。如何获取射线与夹具最近的碰撞点?

听起来你已经掌握了大部分代码,因为你正在从光线投射中取回固定装置。您只需要遍历光线投射击中的所有固定装置并记住最近的一个。类似于:

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);
    }
}