精灵之间的LibGdx碰撞检测?

时间:2017-03-16 09:26:07

标签: java libgdx sprite collision-detection

使用accelerometer我的精灵图像左右移动,如果我触摸我的屏幕精灵正在移动到Y轴。我想在不同的精灵之间进行碰撞检测,这样如果精灵通过了对象它将停止隐藏在该对象中。我已经看过这个https://www.youtube.com/watch?v=T1aN--vTqLc的教程但是没有发生。进行碰撞检测的正确方法是什么?我不知道我的编码有什么问题。任何建议或更好的教程谢谢和提前

这是我的编码

private Rectangle rectangleCat;
private Rectangle rectangleShoes;
private float yPosition = -40;

精灵

    cat = new Texture(Gdx.files.internal("cat.png"));
    catsprite = new Sprite(cat);
    catX=300;
    catY=0;

    sprite_shoes = new Sprite(new Texture("equip/Shoes.png"));
    sprite_shoes.setPosition(260,580);

   rectangleShoes=new Rectangle(sprite_shoes.getX(),sprite_shoes.getY(),sprite_shoes.getWidth(),sprite_shoes.getHeight());
   rectangleCat = new Rectangle(catsprite.getX(),catsprite.getY(),catsprite.getWidth(),catsprite.getHeight());

渲染方法

    boolean isOverlaping = rectangleCat.overlaps(rectangleShoes);
    if(!isOverlaping) {
        System.out.println("not overlap");
        yPosition = yPosition + (20 * delta);

    }

我的精灵图片和对象不重叠

完整源代码http://pastebin.com/Dxfx9f65

1 个答案:

答案 0 :(得分:1)

首先你的精灵不是锐利的矩形它看起来像多边形所以你需要检测两个多边形之间的碰撞。

如果你想检测矩形之间的碰撞,那么在render()方法中获取精灵的Bounding Rectangle。

在渲染方法

rectangleShoes=sprite_shoes.getBoundingRectangle();
rectangleCat=catsprite.getBoundingRectangle();

boolean isOverlaping = rectangleCat.overlaps(rectangleShoes);
if(!isOverlaping) {
    System.out.println("not overlap");
    yPosition = yPosition + (20 * delta);

}
相关问题