我在学习libgdx和其中一件让我真正困惑它的光线投射的东西。我阅读了一篇关于如何使用它的教程,并且我理解它,但我真的很想知道背后是什么。我搜索了这个方法的源代码。有人能解释我rayCast的工作原理吗?
public void rayCast (final RayCastCallback callback, float point1X, float point1Y, float point2X, float point2Y) { // FIXME pool RayCastCallback?
world.raycast(new org.jbox2d.callbacks.RayCastCallback() {
@Override
public float reportFixture (org.jbox2d.dynamics.Fixture f, Vec2 p, Vec2 n, float fraction) {
return callback.reportRayFixture(fixtures.get(f), point.set(p.x, p.y), normal.set(n.x, n.y), fraction);
}
}, this.point1.set(point1X, point1Y), this.point2.set(point2X, point2Y));
} 如何,我们可以看到这个方法递归调用自己,并返回到回调变量reportRayFixture通话。这让我很困惑,它是从代码选择Fixture的地方,以及它如何检查每个灯具。有人能真正解释我的工作吗?
,我将不胜感激!
您正在查看错误的代码(除非您使用的是gwt)。你所指的代码是gwt后端,这是一个使用jbox2d的特例。所有其他后端只使用普通(本机)box2d库。 – Xoppa