新的API
-
Physics.OverLapSphere(位置(Vector3),半径(Float))
函数功能:在该位置生成一个球体,返回一个数组(类型为collider),数组存储所有与球体接触和在球体内的拥有碰撞检测的物体
链接直达:https://docs.unity.cn/cn/2021.3/ScriptReference/Physics.OverlapSphere.html
项目中的应用:判断怪物是否能检测到玩家 -
NavMesh.SamplePosition(一个点(Vector3),out hit(NavMeshHit),范围(float),areaMask(int))
NavMeshHit简介:一个结构体,具体内容:https://docs.unity.cn/cn/2021.3/ScriptReference/AI.NavMeshHit.html
函数功能:返回值为布尔值,若传入的点属于areaMask区域,并且点的距离离物体NavMesh的距离<=传入的范围,返回true,并将该点视为击中的点以引用的方式传给hit
链接直达:https://docs.unity.cn/cn/2021.3/ScriptReference/AI.NavMesh.SamplePosition.html项目中的应用:判断该点是否被渲染为可行走区域,若可行走,则怪物可巡逻至该点,若不可行走则重新选择点
关于areaMask:
由上到下依次为1-n,系统中以二进制表示。
界面整理
- [HideInInspector]:可以使一个public变量不在inspector中显示
- [Header("...")]:可以在inspector中分割变量显示,使逻辑规范清晰:效果如下
ScriptableObject(Important)
ScriptableObject长什么样:
代码样例:(第一行代码功能类似于[Serizable],使其可以在外部进行可视化创建,创建参考下图)
创建方式:(注意上图中的menuName就在本图中表现)