Unity检测一定范围内的物品,显示物品图标是游戏的常见功能了,一般有三种方法,第一种是通过触发器去检测常见用:
Physics.OverlapSphere(target.position, searchRadius, 1 << LayerMask.NameToLayer(layMaskName));相交球。
参数1,是相交球的原点位置,第二个是球的半径,第三个参数是可选参数可以是不同层级的物品。它返回一个Collider[]数组
然后从近到远排序的,所以通过索引直接可以得到最近的可见物品。
第二种是通过射线检测的方式有通过Physics.Raycast()函数检测是否有相关的 CompareTag标签。
第三种就是我今天要说的重点了,通过扇形区域去检测,没有用到触发器纯粹的去比较是否在扇形区域里。