libgdx box2d raycast最近的夹具

时间:2016-10-11 12:54:11

标签: libgdx raycasting closest fixture

我正在使用RayCastCallback接口ıfLibGDX。我找不到从射线起点得到最近点的方法。它返回被光线击中的随机灯具。如何获得光线与灯具之间最近的碰撞点?

1 个答案:

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