优化穿透子弹瞄准
背景
某些穿透型子弹弹道较粗,如果索敌模式选择最近的敌人,就会“耿直”地以最近的敌人为目标发射子弹,导致索敌看起来很呆,只命中很少的敌人。其实很多时候,目标周围有很多敌人,由于弹道较粗,只要稍微调整下发射角度就可以命中一堆敌人。
问题定义
穿透型宽弹道的子弹,可以看作一个矩形弹道,子弹起点 start (取 XZ 平面的二维坐标),初始方向 dir ,子弹射程 length ,子弹半宽 halfWidth ,给定主目标 targetEntity ,在保证主目标包含在这个矩形区域内,调整弹道角度,期望以覆盖更多敌人。
一开始会想针目标计算左右边界角度 [targetMinAngle, targetMaxAngle] ,然后以子弹起点为圆心,射程为半径进行怪物查询,查询后对每个目标依次求得 [monsterMinAngle, monsterMaxAngle] 边界,最后求得最大重叠区域的角度。但是这其中的关键点是角度,处理过程中会频繁进行角度、三角函数、反三角函数的转换,这在定点数游戏里一方面性能开销较大,另一方面多次转换后误差也会叠加。
