Как бы я пошел о проверке столкновения многоугольника и прямоугольника в плитке - PullRequest
0 голосов
/ 27 сентября 2019

Итак, допустим, у меня есть игрок (который расширяет Sprite), и я хочу обнаружить столкновение между игроком (игрок polygonShape) и многоугольником (объект), как мне поступить в Tiled?И если у меня есть 2 объекта, я должен иметь их обоих в одном объектном слое для столкновения или в отдельных слоях?

А вот код (который ничего не делает):

 private void collisionDetection(){
    MapLayer mapLayer = map.getLayers().get(1);
    MapObjects mapObject = mapLayer.getObjects();

    for(PolygonMapObject polygonMapObject: mapObject.getByType(PolygonMapObject.class)){

        Polygon polygon = polygonMapObject.getPolygon();


        if(CollisonHandler.overlapPolygonRectangle(polygon, player.getBoundingRectangle())){ 
            System.out.println("collision");
        }
    }
}

public static boolean overlapPolygonRectangle(Polygon p, Rectangle r) {
    Polygon rPoly = new Polygon(new float[] { 0, 0, r.width, 0, r.width,
            r.height, 0, r.height });
    rPoly.setPosition(r.x, r.y);
    if (Intersector.overlapConvexPolygons(rPoly, p))
        return true;
    return false;
}
...