即使在碰撞后LibGDX矩形的y位置更新

我正在使用2D平台变形器,我想使箱子从天而降。当箱子和地面发生碰撞时,箱子应该停下来。这里是我的代码FO碰撞检测和更新的Box类即使在碰撞后LibGDX矩形的y位置更新

public Box(int x, int y){ 

hitBox = new Rectangle(x, y, 64, 64);

bottom = new Rectangle(x + 5, y, 54, 14);

top = new Rectangle(x + 5, y + 5 + 50, 54, 14);

// other code

}

@Override

public void update(float delta) {

if(!hits){

velocity -= (1 * delta);

System.out.println("velc " + velocity);

hitBox.y += velocity;

top.y += velocity;

bottom.y += velocity;

sprite.setPosition(hitBox.x, hitBox.y);

}

}

@Override

public int hits2(Rectangle r) {

if(bottom.overlaps(r)){

velocity = 0;

hits = true;

System.out.println("hit");

return 1;

}

System.out.println("n");

hits = false;

return 0;

}

这是我的代码Main

for(int i=0; i<list.size(); i++){ 

Box tmpBox = (Box) (list.get(i) instanceof Box ? list.get(i) : null);

for(int j=0; j<list.size(); j++){

if(tmpBox != null){

Brick brick = (Brick) (list.get(j) instanceof Brick ? list.get(j) : null);

Box tmpOtherBox = (Box) (list.get(j) instanceof Box ? list.get(j) : null);

if(brick != null){ // if collision with ground rectangle

tmpBox.hits2(brick.getTop());

}

if(tmpOtherBox != null && tmpOtherBox.hashCode() != tmpBox.hashCode()){ if collision with other box rectangle

tmpBox.hits2(tmpOtherBox.getHitBox());

}

}

}

if(tmpBox != null){

tmpBox.update(Gdx.graphics.getDeltaTime());

}

}

但问题是,当盒子与地面碰撞我的盒子还在往下掉它除了速度非常小。为什么我得到这个奇怪的结果?我知道我可以在我的hits2方法中删除hits = false;,然后当它们与地面碰撞时,我的箱子不会掉下来,但为什么矩形之间的碰撞工作如此奇怪? UPDATE: 在这里它的外观visually

回答:

有你在画它检查地面的碰撞矩形?并且还会引起箱子的碰撞并检查碰撞点。因为我在我的一个游戏中已经完成了这个任务,并且我在底部绘制了一个用于碰撞的矩形,所以当演员离开屏幕时只是认为它以这种方式碰撞了。

libgdx中的冲突与重叠方法完美配合。

以上是 即使在碰撞后LibGDX矩形的y位置更新 的全部内容, 来源链接: utcz.com/qa/263652.html

回到顶部