两个 Shape 对象之间的 Java 碰撞检测?

标签 java 2d collision shapes intersection

我想知道判断一个 Shape 对象是否与另一个形状相交的最佳方法。 目前,只要涉及与矩形相交的形状或反之,我的游戏中的碰撞检测就会得到解决。我遇到的问题是 Shape 类中的 intersects() 方法只能将 Rectangle 或 Point 作为参数,而不能将另一个 Shape 作为参数。有没有一种有效的方法来测试两个 Shape 对象是否以任何方式重叠? 我尝试的一种方法是使用 for 循环生成点区域以测试它们是否在形状中,然后构建一个 Point 对象数组以发送到另一个形状进行测试,但这显着降低了我的帧率,因为所有不必要的比较。

我在这里找了又找类似的东西,但没有找到任何东西。如果这是重复的,请提前道歉。

最佳答案

未测试,但为什么不:

import java.awt.geom.Area;

...

public static boolean testIntersection(Shape shapeA, Shape shapeB) {
   Area areaA = new Area(shapeA);
   areaA.intersect(new Area(shapeB));
   return !areaA.isEmpty();
}

Area 实现了 Shape,但添加了一些可能有用的方法

关于两个 Shape 对象之间的 Java 碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690846/

相关文章:

java - JBox2D - 查找碰撞坐标

physics - 计算两个圆之间的碰撞时间 - 物理

protocols - iBeacon/发送器/接收器如何处理冲突?

Java 游戏图像缓冲留尾

java - java Mock 文件的建议(模拟 java.io.File)

java - 放心 解析 JSON 文档失败

java - 未收到来自服务器 : Java.net.SocketException 的响应:recvfrom 失败:ECONNRESET

java - 是否有更短的代码或更简单的方法将元素添加到不同大小的多个数组中?

c - 对字符数组进行冒泡排序

c++ - SDL 2.0 - 空白屏幕