现在有个需求,空中的AI飞行器需要避免彼此的碰撞,因此需要预先检测并采取措施进行规避。所以就有了这个传感器模块。

现在构思的传感器组件,大概有这么几点: 

1.每个GameActor对应一个传感器,传感器作为一个组件,如果该Actor有这种需求,那么就new一个组件,否则将为NULL。

2.每个传感器有自己的GUID 

3.每一帧开始之前,清空所有Actor的传感器

4.对于每一个传感器,有一个{zd0}的检测范围,然后根据这个范围来筛选出周围其他Actor的列表

5.根据两者之间的距离,乘以一个比例系数K,得到一个外力F,然后将这个外力分别施加到各自双方物体上(方向相反),每个传感器计算合力 

6.需要确保每两个传感器之间仅仅检测一次,比如ABCD四个物体,检测A时,AB,AC,AD已经检测过;那么在检测B时,就不需要再检测AB,仅仅需要检测BC,BD;而到C时,仅仅检测CD;我不想为每一个传感器维护一个CheckedList之类的,感觉应该可以有一种基于BitMask的快速方式。

---------------------

下午想了下,决定用一个BitArray来管理相互之间的Mask。每帧开始时,清理这个BitArray,之后两两检测之后,就把两者的Mask分别标记,应该没问题。