Java 更有资源的碰撞检测

标签 java resources collision-detection paint

我正在用 Java 制作一个游戏,其中涉及角色在 map 上移动,并通过从文本文件中读取某些数据在 map 周围放置一些固体碰撞对象(即建筑物)。将有多个 map ,这些对象的位置将发生变化。 我的问题是用某种颜色绘制一个矩形,表示在此类结构后面发生碰撞或者读取鼠标坐标并搜索这些结构的数组以查看该点是否位于一座建筑物,因此拒绝移动或改变,更足智多谋和/或更快。如果画一个矩形是最好的,那么将它留在结构后面或在检测到碰撞后删除它会更好。感谢您的宝贵时间!

最佳答案

在大学三年级时,我研究了 Windows Phone 的碰撞检测系统算法。它并不完美,但非常高效,可以适应大多数游戏。

它的工作方式非常简单。有两种类型的对象;可碰撞对象(例如敌人或建筑物)和您希望检查与这些可碰撞对象是否发生碰撞的对象。

我在学习数据结构类(class)时产生了这个想法,我们谈到了链表。我想如果每个链接都是一个可碰撞的对象,您可以将已经在其中创建的游戏对象粘贴起来。然后当游戏对象四处移动时,您将有一种轻量级的方法来检查它们的位置是否发生碰撞。于是我的系统诞生了。

它实际上是一个在每个游戏周期或您选择检查碰撞时触发的类。你给它你的玩家位置,或者子弹位置或者你想要查看它是否与某物发生碰撞的任何对象,它会搜索所有可碰撞的对象位置并进行测试以查看它们是否重叠。

当您添加第二个元素(位置和象限)时,它的真正效率开始发挥作用

例如,如果我将手机屏幕分成几部分并且我知道我的玩家或子弹在哪个象限,我可以选择只扫描该象限内的可碰撞对象列表。从而将您的搜索算法减少到其原始大小的四分之一。 enter image description here

检测碰撞的方法有很多种。这是我在类里面使用的一个简单示例,用于展示如何检测两个实际上是正方形的圆碰撞。正如您所看到的,只需获取圆的中心点坐标和半径,您就可以计算斜边并确定它们在哪里或是否接触。 enter image description here

祝你好运!如果您有任何问题,请随时提出!

关于Java 更有资源的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14764354/

相关文章:

java - iText : how to refactor code to avoid multiple addCell in method

java - SCJP 模拟题 : How many objects are eligible for garbage collection?

eclipse 动态Web项目文件位置

algorithm - 使用二次探测时如何找到数组中的特定元素?

javascript - 在 3D 空间中实现扩展多面体算法

java - 使用面板类中的按钮调用框架类中的ActionListener

java - Maven内嵌tomcat部署war文件

c++ - FindResource 1813 错误 RC_DATA

.net - 如何在 Nuget 包中包含 resx 文件

complexity-theory - 避免O(n ^ 2)复杂性进行碰撞检测