gpt4 book ai didi

Java 更有资源的碰撞检测

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:06 24 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

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

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

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com