Android LibGdx碰撞

Android LibGdx碰撞,android,libgdx,touch,collision,Android,Libgdx,Touch,Collision,我目前正在使用LibGdx开发我的第一个Android游戏项目。这是一个2D迷宫游戏,您可以使用触摸输入从一个入口到一个出口“绘制”一条线。世界本身就是一个平铺地图,目前仅作为视觉背景 我的问题是整个碰撞检测系统。迷宫中有(不经意间)墙,位于我背景瓷砖的边缘。因此,当我的手指滑过墙壁时,“玩家线”应该停在墙上。此外,当线路到达出口时,应触发事件 我无法找到使用内置库正确实现这些功能的方法(我尝试使用Scene2D和Box2D)。停止一个演员的动作并触发一个事件并不是那么奇特,或者 我所需要的只是

我目前正在使用LibGdx开发我的第一个Android游戏项目。这是一个2D迷宫游戏,您可以使用触摸输入从一个入口到一个出口“绘制”一条线。世界本身就是一个平铺地图,目前仅作为视觉背景

我的问题是整个碰撞检测系统。迷宫中有(不经意间)墙,位于我背景瓷砖的边缘。因此,当我的手指滑过墙壁时,“玩家线”应该停在墙上。此外,当线路到达出口时,应触发事件

我无法找到使用内置库正确实现这些功能的方法(我尝试使用Scene2D和Box2D)。停止一个演员的动作并触发一个事件并不是那么奇特,或者

我所需要的只是一些关于我应该使用什么的信息,也许还有一些初步步骤。:)
提前谢谢

碰撞检测可能是制作平铺游戏最困难的部分。Libgdx有很多有用的方法来帮助您获取几何体,但是检测到碰撞后的实际碰撞处理(称为碰撞分辨率)是一个很大的主题。我想你只想让球员停下来。Box2D专门提供更先进的真实感解决方案,如反弹和摩擦

首先也是最重要的是,获取将要碰撞的几何体

a) 玩家可以用一个矩形来表示。让它扩展Sprite类,然后您就可以使用getBoundingRectangle()函数(矩形保持简单,但还有许多其他形状用于碰撞)

b) 获取瓷砖的几何图形,还有一组矩形。 获取周围瓷砖的函数

    public void getsurroundingTiles(int startX, int startY, int endX, int endY, Array<Rectangle> surroundingTiles){



    TiledMapTileLayer layer = (TiledMapTileLayer) worldRef.getCurrentMap().getLayers().get("Terrain");
    surroundingTiles.clear();
    for (int y = startY; y <= endY; y++) {
        for (int x = startX; x <= endX; x++) {
               Cell cell = layer.getCell(x, y);
            if (cell != null && cell.getTile().getProperties().containsKey("blocked")) {
                Rectangle rect = new Rectangle();
                rect.set(x, y, 1, 1);
                surroundingTiles.add(rect);
            }
        }
    }
}
public void getsurroundingTiles(int-startX、int-startY、int-endX、int-endY、Array-surroundingTiles){
TiledMattileLayer层=(TiledMattileLayer)worldRef.getCurrentMap().getLayers().get(“地形”);
环绕文件。清除();

对于(int y=startY;y),您只需检测用户按下的瓷砖,如果两块瓷砖之间有墙,则不会将最后一块瓷砖添加到path@noone我也这么想。但为了更好的游戏体验,我希望玩家线能够“自由”移动在瓷砖内部。这就是为什么我需要碰撞检测。一个简单的模型,希望有助于理解我的意思:无论如何,谢谢!在看到你的答案之前,我解决了这个问题,但它帮助我在新项目中实现了更好的解决方案。所以我现在接受了它,谢谢!