Unity 使用物理射线(Physics.Raycast),实现扇形区域碰撞检测三种方法(借鉴大神,仅作为笔记用)
Unity 使用物理射线(Physics.Raycast),实现扇形(Fan-Shaped)区域碰撞检测。 参考之前的制作简单AI: Unity 有限状态机(Finite State Machine)的理解 与 实现简单的可插拔(Pluggable)AI脚本对象。 源码:GentleTank/PluggableAI/Scripts/Decision/LookDecision.cs 方法一: 实现原理:(lookAngle / 2) / lookAccurte 很简单,就是射多几条角度平均的射线。可以设置角度,精度(射线数量),来调节扇形区域的检测。每条射线夹角是总夹角处于2,再除于精度。 1. 默认是射出一条向前的射线,精度为0。 2. 设置角度为90,精度为1,就会多出两条相对正前方45度的射线。 3.设置精度为2。 实现代码 // // LookDecision // //放射线检测 private bool Look(StateController controller) { var defaultStats = controller.defaultStats; //一条向前的射线 if (LookAround(controller, Quaternion.identity, Color.green)) return true; //多一个精确度就多两条对称的射线