libgdx如何检测碰撞?

时间:2018-03-27 23:54:25

标签: java android libgdx sprite collision

我有一个检测碰撞的问题。我使用了TiledMap并创建了一个虚拟操纵杆,因此可以在各个方向上移动,而不仅仅是向左,向右,向上,向下。观点与顶部直接成90度。

我不知道这是否是TiledMap的目的,但我认为地图很容易创建。但是现在我遇到了碰撞检测的问题。由于地图不像棋盘那样排列,我需要检查整个Sprite是否有碰撞。能告诉我这是怎么回事吗?

谢谢

2 个答案:

答案 0 :(得分:0)

首先,我建议您结帐this question以清除一些内容,并了解碰撞检测如何与TiledMaps一起使用。

总结:使用TileEditor,您可以向TiledMap添加不同的图层。其中一个层可以是可用于碰撞的物体层。有关如何创建和访问图层,请查看链接的问题。

对于您的示例,有一些需要首先清除的核心问题:

  1. 碰撞物体的形状和大小有哪些?
  2. 对象可以在两个图块之间移动吗?
  3. 碰撞会发生什么?
  4. 口袋妖怪是一个非常简单的例子。播放器的大小只有一个磁贴,不能在它们之间移动。如果发生碰撞,玩家就无法移动。

    如果这是您想要的,您可以在移动任何对象之前添加一个检查:如果下一个图块无效,则不要移动该对象。对于碰撞检查,您只需调整first answer中的示例代码。

    在光谱的另一端,你可以有不同形状的物体,这些物体具有不同的比例,具有动态的速度,并且应该在TileMap上反弹物体。在这种情况下,使用box2d进行碰撞检测可能比在this answer中更聪明。

    因此,根据您的需求,只需尝试调整我链接的任何答案。也许只是从一个超级简单的盒子碰撞开始尝试扩展你的代码。

答案 1 :(得分:0)

使用此方法

 void isCollition(Object x, Object y) {
    Boolean collide = false;
    if (x.getX() + x.getwidth() < y.getX() + y.getWidth() ||
            x.getY() + x.getHeight() < y.getY() + y.getHeight() {
        collide = true;
    }
    return collide;
}