【发布时间】:2016-12-26 05:01:09
【问题描述】:
我正在学习 libgdx 和其中一件真正让我困惑的事情是它的光线投射。我阅读了如何使用它的教程并且我理解它,但我真的很想知道后面是什么。我搜索了这个方法的源码。
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的调用。真正让我感到困惑的是代码从哪里选择夹具,以及它如何检查每个夹具。谁能解释一下它的工作原理。
我会很感激的!
【问题讨论】:
-
您正在查看错误的代码(除非您使用的是 gwt)。您所指的代码用于 gwt 后端,这是使用 jbox2d 的特殊情况。所有其他后端只使用普通(本机)box2d 库。
标签: java libgdx game-physics