Java libgdx如何检测碰撞?

Java libgdx如何检测碰撞?,java,android,libgdx,sprite,collision,Java,Android,Libgdx,Sprite,Collision,我在检测碰撞方面有问题。我正在使用TileMap并创建了一个虚拟操纵杆,这样就可以在各个方向上移动,而不仅仅是左、右、上、下。视角与顶部成90度角 我不知道这是否是平铺贴图的目的,但我认为贴图很容易创建。但现在我在碰撞检测方面遇到了问题。例如,由于地图不像棋盘那样排列,我需要检查整个精灵是否发生碰撞。你能给我解释一下它是怎么工作的吗 谢谢首先,我建议您签出以澄清一些问题,并了解碰撞检测如何使用平铺贴图 摘要:使用TileEditor,您可以将不同的层添加到TileMap。这些层中的一个可以是用于

我在检测碰撞方面有问题。我正在使用TileMap并创建了一个虚拟操纵杆,这样就可以在各个方向上移动,而不仅仅是左、右、上、下。视角与顶部成90度角

我不知道这是否是平铺贴图的目的,但我认为贴图很容易创建。但现在我在碰撞检测方面遇到了问题。例如,由于地图不像棋盘那样排列,我需要检查整个精灵是否发生碰撞。你能给我解释一下它是怎么工作的吗


谢谢

首先,我建议您签出以澄清一些问题,并了解碰撞检测如何使用
平铺贴图

摘要:使用TileEditor,您可以将不同的层添加到
TileMap
。这些层中的一个可以是用于碰撞的对象层。有关如何创建和访问图层,请签出链接问题

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

  • 碰撞的物体有什么形状和大小
  • 对象可以在两个平铺之间移动吗
  • 碰撞时会发生什么
  • 口袋妖怪是一个超级简单的例子。玩家只有一块瓷砖大小,不能在它们之间移动。如果发生碰撞,玩家就无法移动

    如果这是您想要的,您可以在移动任何对象之前添加一个检查:如果下一个平铺无效,请不要移动对象。对于碰撞检查,您只需调整来自的示例代码即可

    在specturm的另一端,可以有不同比例的不同形状的对象,这些对象具有动态速度,应该在TileMap上反弹。在这种情况下,使用box2d进行碰撞检测(如中所示)可能是明智的

    所以,根据你的需要,试着修改我链接的任何答案。也许只是从一个超级简单的方框冲突开始,尝试扩展代码

    使用这种方法

     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;
    }
    
    void iscollection(对象x、对象y){
    布尔碰撞=假;
    如果(x.getX()+x.getwidth()