我在學習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