当前位置: 首页 > 面试题库 >

两个Shape对象之间的Java冲突检测?

卢书
2023-03-14
问题内容

我想知道判断Shape对象是否与另一个形状相交的最佳方法。目前,我在游戏中已对碰撞检测进行了分类,只要它涉及与矩形相交的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,但添加了一些潜在有用的方法



 类似资料:
  • 好的,所以我目前正在使用LWJGL在Java中开发2d游戏。我对java及其工作原理有相当扎实的了解,并且了解游戏如何工作和LWJGL / openGL的基础知识,但我在渲染纹理方面遇到了一个非常奇怪的问题。我确定我在这里的一种绘制方法是罪魁祸首。 所以发生的事情是,如果我用这种方法渲染任何东西,那么下一个渲染的东西看起来像是字面上压缩了一端,在另一端被拉伸了,即使渲染的下一个东西不是用这种方法渲

  • 我注意到以下几点: 如果我创建了一个具有物理边界(

  • 如何在javaFx上得到2个图像或边界相交的碰撞?我移动一张图片,但是如果我触摸第二张图片,我想触发一些东西。 此代码不起作用

  • 我正在使用spring boot创建一个后端应用程序,其用户使用JWT进行身份验证。 当我验证用户的jwt(使用过滤器)时,我将其内容解析为一个名为“身份验证”的对象,其中包含用户的id、名称、角色... 在用用户数据创建这个对象之后,我自动连接它,以便将它用于任何类(服务、控制器…) 大多数时候,我对它没有问题。但有时我发现这个对象包含另一个用户的信息。 我认为每个用户都可以访问包含其信息的对象

  • 问题内容: ‘Go’的新手。问题可能是最基本的问题。 我有两个time.Time对象,我想获得小时/分钟/秒这两者之间的差异。可以说: 在上述情况下,由于差为0。应该给我00:00:00。考虑另一种情况: 在这种情况下,差异将为00:05:41。我看了看https://godoc.org/time,但什么都做不了。 问题答案: 您可以用来获取2个值之间的差,结果将是的值。 打印时,格式本身会“智能

  • 我目前正在学习C#和XNA,我在让碰撞检测正常工作方面遇到了一些问题。当敌人物体相交时,我希望我的玩家消失。 下面显示了我在Obj类中的代码 我正在循环查看objList中的每个项目,看它们是否相交。在这种情况下,如果敌人与我的玩家相交,我希望玩家消失,但这并没有发生。 此代码来自我的Player类 如果它与敌人相交,它应该消失,但这似乎没有发生。