检查两个 Path2D 之间的交集

Jav*_*mer 1 java intersection path collision-detection bounds

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

小智 5

  1. 确保你的触手和玩家的路径是闭合的。(如果没有,它们将被隐式关闭,当你认为不应该的时候,你就会被触手击中。)
  2. 使用 Area 类计算交集并查看是否为空

(大概代码)

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();
}
Run Code Online (Sandbox Code Playgroud)