Quantcast
Channel: Question and Answer » libgdx
Viewing all articles
Browse latest Browse all 434

Implementing Mouse Lasso

$
0
0

I am toying around with a Boogaloopers clone (http://www.youtube.com/watch?v=zuaRi_fhdlQ).

I have a small problem with the lassoing.

Here’s my current naive algorithm. The problem with this is that the player can swipe a U-shaped pattern with the mouse, and it is detected as a polygon, since the isPointInPolygon-method connects the first and last points together. I wonder if there’s a simple way to fix this?

private void collisionDetection() {

    Player p = Player.getPlayer();

    Array<Beam> beams = p.getBeams();

    if (beams.size < 3)
        return;

    for (int i = 0; i < beams.size; i++) {

        Beam b1 = beams.get(i);

        for (int k = i + 1; k < beams.size; k++) {

            Beam b2 = beams.get(k);

            // Don't do collision detection with adjacent beams
            if (p.areConnected(b1, b2))
                continue;

                if (Intersector.intersectSegments(b1.getStart(), b1.getEnd(), b2.getStart(), b2.getEnd(), null)) {

                Array<Vector2> path = p.getPath();
                if (path.size < 3)
                    continue;

                boolean destroyed = false;

                // Destroy any monsters inside the polygon
                for (int j = 0; j < entities.size; j++) {
                    Entity e = entities.get(j);

                    if (e instanceof Player)
                        continue;

                    if (Intersector.isPointInPolygon(path, e.getPosition())) {
                        destroyed = true;
                        e.destroy();
                    }
                }

                if (destroyed) {
                    SFX.play("sfx-destroy");
                }

                return;
            }
        }
    }
}

Viewing all articles
Browse latest Browse all 434

Trending Articles