Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为碰撞处理实体_Java_Collision - Fatal编程技术网

Java 为碰撞处理实体

Java 为碰撞处理实体,java,collision,Java,Collision,我正在使用LWJGL和Java1.6编写一个2d自顶向下的RPG。到目前为止,我的渲染和输入方法工作良好,并且刚刚开始编程游戏的逻辑 所以我有一个名为World的类,它包含一个实体数组列表。我想在游戏中实现简单的碰撞(使用相交的方块),这应该没有问题。我现在唯一的问题是如何访问列表中的单个单元格,而不必遍历它。我只能提出在每个实体内部执行的冲突方法,并在我的世界中迭代所有实体。这一点也不快,但我真的不知道该怎么做才能让它更快 我的游戏是平铺的,但移动不是平铺到平铺,人们可以走更小的部分,这避免了

我正在使用LWJGL和Java1.6编写一个2d自顶向下的RPG。到目前为止,我的渲染和输入方法工作良好,并且刚刚开始编程游戏的逻辑

所以我有一个名为World的类,它包含一个实体数组列表。我想在游戏中实现简单的碰撞(使用相交的方块),这应该没有问题。我现在唯一的问题是如何访问列表中的单个单元格,而不必遍历它。我只能提出在每个实体内部执行的冲突方法,并在我的世界中迭代所有实体。这一点也不快,但我真的不知道该怎么做才能让它更快

我的游戏是平铺的,但移动不是平铺到平铺,人们可以走更小的部分,这避免了我简单地使用二维阵列


是否有处理实体及其碰撞的标准方法?(或者处理位于ArrayList内部的实体之间的冲突的方法?

处理冲突实体的标准方法是通过空间分区。你的世界是一个由离散点组成的二维平面。 每个零件都可以位于其中一个点上。点的数量决定了平面的分辨率-点越多,视觉效果越好,需要执行的计算越多。这就是交易

您可以维护实体位置和实体本身之间的映射,其中位置由覆盖equals和getHashCode的对象表示。位置对象包含两个成员-X和Y坐标

注意-您必须以适当有效的方式覆盖

因此,如果您知道每个实体的坐标,您可以非常快速地访问每个实体,重新排列只是删除一个实体并添加新坐标(这可以针对局部性进行优化),碰撞检测非常简单-只需检查同一位置是否被某个实体占用


我还想请您参考上面的内容。

您的所有实体都位于二维平面上吗?你如何跟踪他们的位置?有多少实体同时移动?事实上,到底有多少实体?我不能确切地说有多少实体,但我认为通常会有500个实体同时移动。是的,所有的人都在飞机上。它们的位置以双精度形式存储在每个对象中。它被重新缩放以适应tiles网格。好的,另一个问题:你说“我现在唯一的问题是如何访问列表中的单个单元格而不必遍历它。”你如何知道首先需要移动的部分?我问所有这些问题是为了找出一个更合适的抽象和数据结构,你可以用它来表示你的世界。如果InPurthandler假设某个状态,玩家会被移动,我的计划是在我“勾选”其他实体时随机移动它们。我的游戏每秒有60次滴答声,这会让每个对玩家有一定愤怒的实体都得到更新。我是否应该使用列表列表使其成为二维的?当实体的x和y位置改变其整数部分时,它们就会在列表中移动。通过这样做,我将可以直接访问一些实体所在的这些单元,并与它们一起为collisin工作。谢谢。这就是要走的路=)