我一直在阅读关于rayCasting和Box2D的各种教程,但是我还没有看到任何明确的例子。我希望熟悉box2dweb的人能够给出一个清晰的例子,说明如何设置一个简单的函数,最终结果如下所示:
var myRayCastFunction = function(p1,p2,maxFraction){
//Code here
}这个想法是可以这样使用的:
var retVal = myRayCastFunction(p1,p2,maxFraction)
var fixture = retVal.fixture
var point = retVal.point
var normal = retVal.normal
var fraction = retVal.fraction(在这种情况下,我只是返回一个交集,比如最近的一个,但是我想知道如何制作一个类似的交集,其中retVel是每个交叉口的输出列表)
我一直在试图了解RayCasting如何在box2D中工作的所有细节,我理解这需要定制回调函数(我认为?),但我从来不知道这个函数需要放在哪里,以及应该放在什么位置。
发布于 2014-07-19 20:00:49
我开始回答这个问题是因为我碰巧要在我的当前项目中添加射线投射,我意识到在完成之前,box2dweb中实际上有一些bug需要修复。我将链接到详细信息,而不是混乱这篇文章:http://www.iforce2d.net/box2dweb-fixes.txt
以下是我如何成功地使用光线广播回调。声明回调类并给它一个ReportFixture函数:
var RaycastCallback = function() {
this.m_hit = false;
}
RaycastCallback.prototype.ReportFixture = function(fixture,point,normal,fraction) {
if ( ... not interested in this fixture ... )
return -1;
this.m_hit = true;
this.m_point = point;
this.m_normal = normal;
return fraction;
};现在,创建一个将其传递给worlds函数的实例:
var rayStart = ...;
var rayEnd = ...;
var callback = new RaycastCallback();
world.RayCast(callback, rayStart, rayEnd);
if ( callback.m_hit ) {
... use callback.m_point etc ...
}https://stackoverflow.com/questions/24834797
复制相似问题