【发布时间】:2016-04-13 15:30:46
【问题描述】:
我正在尝试在 box2d 中找到自己的方法,但我不确定我使用 raycast 回调进行视线检测的方法。
private RayCastCallback callback = new RayCastCallback() {
@Override
public float reportRayFixture(Fixture fixture, Vector2 point, Vector2 Normal, float fraction) {
collision.set(point);
lineOfSight.addLast(fixture);
if (fixture.getFilterData().categoryBits != BIT_PLAYER) {
System.out.println("ray hit wall");
return fraction;}
else if (fixture.getFilterData().categoryBits == BIT_PLAYER) {
System.out.println("player found");
return fraction;
}
return 0;
}
以上是我的回调方法,通过以下方式调用:
world.rayCast(callback, startp, endp);
以上行在update方法中,不断调用。
现在的问题是我有多个对象在执行此光线投射,所以发生的情况是固定装置被添加到接触队列中,并且更新方法中有一些代码检查队列中的第一项是否是播放器。如果是玩家,则发射弹丸。
if (lineOfSight.first().getFilterData().categoryBits == BIT_PLAYER) {
lineOfSight = new Queue<Fixture>();
createBullet();
} else {
lineOfSight.clear();
}
所有这些看起来有点乱,也没有完全工作,因为我有多个身体光线投射并使用回调方法。
是否有更有效的方法来执行此操作,或者以某种方式编辑 reportRayFixtue 方法?我想不出编辑参数的方法:( 感谢您的宝贵时间。
【问题讨论】:
标签: java libgdx box2d raycasting