所以我使用Unity来做这件事,但我不确定是否重要。
我有可见屏幕以外的敌人,我希望在屏幕一侧有指示符来表示它们的位置。那很好,但是有很多敌人,所以我想将它们分成blob。如同,而不是在彼此之上显示8个指标,我想要一个指标,旁边有一个(8)。
现在,我的算法是:
我每帧都这样做,感觉效率低下。我该怎么做才能改善这一点,并节省帧之间的处理。就像在,我可以用前一帧的数据来做得更好(因为blob成员变化的可能性非常低,但它肯定会有更新的位置)。
或者,我应该不再担心它并继续,因为它只是矢量数学,并不会真正导致引擎出现问题。
答案 0 :(得分:2)
构造一个低分辨率网格,提供该区域的粗略视图。将每个敌人分配到适当的网格位置(应该可以直接计算)。显示每个占用网格位置的指示器;与一个敌人的位置获得单独的敌人指标,具有多个敌人的位置获得组指示。
在实践中,我希望稀疏表示比实际构建整个网格更有意义。
请注意,在检测碰撞时使用的概念基本相同。
ADDENDUM。稍作修改可能适用于纯粹的方向指标。如果你有两个相同方向的敌人,但距离不同,则网格方法会导致两个指示器在同一方向上。如果这是不合需要的,将轴承的计算基于敌人,将360度圆分成粗糙的楔形,就像所有区域相等的饼图一样。根据敌人所属的切片对敌人进行分组。
答案 1 :(得分:1)
就目前处理能力而言,你可能对目前的任何事情都很好。
对于使用遗传算法的邻近分组问题,有一种有趣的方法:http://www.cbu.edu/engineering/maesc/maesc03/FullPapers/d3-1-doc.pdf
此外,此链接看起来很有希望:K-means algorithm variation with equal cluster size
但老实说,我在数学方面做得很好,实际上给出了一个可靠的答案......