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);
}
}
我正在使用 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);
}
}