下图是图片演示。
我正在使用Box2D和LibGDX。
基本上我有一个随机大小的'阶段'子弹。阶段子弹穿过对象并被设置为传感器。
我的问题是,Libgdx或Box2d没有像“isBodyColliding”这样的简单函数,所以我试图实现自己的(不起作用):
@Override
public void update(float update) {
super.update(update);
this.countdownTillNextHit.reduceTime(update);
if(this.countdownTillNextHit.isComplete())
{
this.countdownTillNextHit.start(this.hitTimer);
GameController.getInstance().getWorld().QueryAABB(new QueryCallback() {
@Override
public boolean reportFixture(Fixture fixture)
{
if(fixture.getBody().getUserData() != null && fixture.getBody().getUserData() instanceof LivingObject)
{
LivingObject livingObject = ((LivingObject) fixture.getBody().getUserData());
if(livingObject.getLongestBox2D() > getLongestBox2D())
{
if(fixture.testPoint(getBody().getWorldCenter()))
{
for(PhaseHitInterface phaseHitInterface : phaseHitInterfaceArray)
{
phaseHitInterface.hitLivingObjectRepeat(livingObject);
}
}
}
else
{
if(getBody().getFixtureList().first().testPoint(livingObject.getBody().getWorldCenter()))
{
for(PhaseHitInterface phaseHitInterface : phaseHitInterfaceArray)
{
phaseHitInterface.hitLivingObjectRepeat(livingObject);
}
}
}
}
return false;
}
},
this.getBody().getPosition().x - (getWidthBox2d() / 2f), //Lower left x
this.getBody().getPosition().y - (getHeightBox2d() / 2f), //Lower left y,
this.getBody().getPosition().x + (getWidthBox2d() / 2f),
this.getBody().getPosition().y + (getWidthBox2d() / 2f)
);
}
我尝试使用开始接触和结束接触数组来跟踪区域内外的内容但是endContact没有得到调用导致数组因为对先前对象的引用而变大。
有人可以帮助我吗?