在unity3d中,我如何实现200台预制板与另外200部预制板的战斗?
假设我有一个支持预制板,可以增加友方预制板的护甲,同时减少敌对预制板的护甲。在一场巨大的战争中,400个预制板(友好的和敌对的)互相接近,这将导致巨大的计算量,并且大大减少fps到2或3。
我在谷歌上搜索了一下,发现了一种有趣的叫做剔除方案的东西。但我不能理解它,也不知道如何团结一致地实施它。
下面是链接:http://forum.unity3d.com/threads/overlapsphere-with-hundreds-of-agents-and-performance.157690/
因此,1.请你向我解释一下如何使用上述链接中的剔除方案? 2.在同时拥有上百个预制材料的情况下,是否有其他方法来实施一场战斗?
发布于 2015-02-15 18:03:08
这些信息似乎不可靠。然而,被描述为剔除方案实际上是一个简单的想法,但如何实现它是高度依赖于您的游戏。
其想法是根据它们的位置将单位分开,以便交互操作(攻击、防御、人工智能等)只对那些彼此足够亲近的人工作。
我可以想到两种不同的方法:

我的猜测是,如果您选择第一个选项,它将很容易实现,但由于您应该更新的平方成员比第二个选项更频繁,它有一些性能问题。
如果你选择第二个(它需要更多的研究如何使用触发器,运动学,刚体.)如果做得好,您就不会遇到性能问题。
编辑
在每个2x2平方中,这5个是处理的唯一必要交互,如果已经处理了以前的平方,则为:
(first 1x1 square, last 1x1 square)
(second 1x1 square, last 1x1 square)
(third 1x1 square, last 1x1 square)
(within last 1x1 square)
(second 1x1 square, third 1x1 square)假设我们有一个3行3列的区域。我们增加一个额外的行和列来简化计算(零平方在边界之外,因此没有单位在其中)。

现在,在每个2x2平方(例如1,2,4,5)中有10种类型的交互作用:
(1,1) (1,2) (1,4) (1,5)
(2,2) (2,4) (2,5)
(4,4) (4,5)
(5,5)如果我们像下面这样按顺序处理这些交互,我们可以确保没有进行两次交互。

例如:
因此,第5步剩下的是:
(1,5) (2,5) (4,5) (5,5) (2,4)很明显,对于包含零平方的2x2平方,情况也是一样的。只是我们跳过了涉及0的交互。
https://stackoverflow.com/questions/28528944
复制相似问题