首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android -碰撞检测/引擎优化-大,开放,沙箱地图

Android -碰撞检测/引擎优化-大,开放,沙箱地图
EN

Stack Overflow用户
提问于 2012-07-28 16:44:45
回答 1查看 365关注 0票数 0

短版

在动态生成对象的大型开放地图中,检测碰撞的性能友好的方法是什么?

长版本

我目前正在重新创建我做过的第一个安卓游戏(result#?t=W251bGwsMSwyLDEsImNvbS5Kb2V5X0FudC5MaXRlIl0.)。

我正在从头开始重建它,并增加了大约100个新特性。

游戏描述:用户将控制一个蚁群,该蚁群有一个地下的、基于网格的地图,以及一个地上开放的竞技场。蚂蚁会有人工智能,可能会有大量的蚂蚁。(这意味着我需要优化所有的东西。)这些地图将是高度可变的。(我计划制作一个地图创建者,让用户在线创建和下载地图。)

那么,在一张充满大量物体和其他蚂蚁/生物的地图中,什么是探测碰撞的最佳方法?我不能在所有其他物体上循环来检测碰撞,因为这必须发生在每个生物身上,而且占用了太多的cpu时间。

我所考虑的

grid :创建任意网格对象。网格对象将创建子区域(实际网格),每当生物“思考”时。它将使用对自身的引用来更新网格对象。然后,生物会向网格对象请求网格内的其他对象。这有望大大减少需要进行的检查的数量。但这方面的开销可能更大。这个网格可能有助于让生物在其一般区域探测其他生物,因为AI的决定将由该区域的其他对象和生物执行。

占用网格:本质上与上面的网格选项相同,只有网格对象是由对象创建的。假设我有3个对象(A、B和C)。当我初始化对象A时,它会创建一个具有指定宽度和高度的网格单元。对象B被初始化,但与对象A位于同一区域,因此它将自己添加到该网格区域。对象C在区域外初始化,因此它为它的位置创建一个网格单元。如果对象C进入单元对象A在其中,则其先前的单元格将被破坏。我想你可以想象这是在吹泡泡。

有什么更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 13:31:09

这是一个很老的问题,我不知道你是否找到了解决办法,但为什么不使用一个已经开发的碰撞探测和物理引擎,而不是发明热水。以下是一些可能性:

  1. androidbox2d
  2. 发动机

也有很好的例子说明如何使用它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11702847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档