Java更加资源化的碰撞检测

时间:2013-02-08 01:36:47

标签: java resources collision-detection paint

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

2 个答案:

答案 0 :(得分:5)

在大学三年级的时候,我为Windows手机开发了碰撞检测系统算法。它并不完美,但它极其高效,可以适应大多数游戏。

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

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

真的是,这是一个在每个游戏周期或你选择检查碰撞时都会触发的课程。你可以给它你的玩家位置,子弹位置或者想要看到的对象,如果它与某些东西发生碰撞,它会搜索所有可碰撞的对象位置并进行测试以查看它们是否重叠。

当你添加第二个元素(位置和象限)

时,它的真正效率发挥作用

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

检测碰撞的方法有很多种。这是我在课堂上使用的一个简单示例,用于说明如何检测两个实际上是正方形的圆碰撞。正如您可以通过获取圆的中心点坐标和半径来看,您可以计算斜边并确定它们在何处或是否在接触。 enter image description here

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

答案 1 :(得分:0)

posting中的最后一个回复可能会帮助您解决问题。这是一个简单的迷宫。迷宫的结构由一个数据文件控制,该文件只包含0,1表示路径或墙。您可以使用箭头键在迷宫中导航。按下箭头键时,代码会检查以确保下一个方块不是墙。