检查两个Path2D之间的交叉点

时间:2013-05-30 13:45:27

标签: java path collision-detection intersection bounds

我的游戏中有两个Path2D对象,一个用于玩家,另一个用于其中一个老板将拥有的触手。我需要使用Path2D因为我希望绑定与播放器/触手一起旋转,这样如果你站在它旁边5个像素就不会被它击中。这个问题是我不能使用playerPath.intersects(tentaclPath),因为Path2D只能检查与矩形的交集,这是一个问题,因为它在我的游戏中失败了使用Path2D的目的。如何在不将其中一条路径转移到矩形的情况下检查它们是否相交?

1 个答案:

答案 0 :(得分:2)

  1. 确保您的触手和播放器是封闭的路径。 (如果没有,它们将被隐式关闭,当你认为不应该时,你会得到触手击中。)
  2. 使用Area类计算交集并查看它是否为空
  3. (近似代码)

    import java.awt.geom.Area;
    ...
    boolean playerHitByTentacle(Tentacle t, Player p) {
        Area player = new Area(p.getPath2D());
        Area tentacle = new Area(t.getPath2D());
        player.intersect(tentacle);
        return !player.isEmpty();
    }