相机&渲染设置
创建动画混合树
- 在nave mesh agent中获得速度speed传递给混合树中的参数
- sqrMagnitude:将一个vector3 转化为浮点值
anim.SetFloat("Speed", agent.velocity.sqrMagnitude);
遮挡剔除
当人物被障碍物挡住的时候我们希望看到角色的轮廓,先创建一个Unlit shader graph并保存
用该shader创建一个material
在URP渲染管线中添加render feature,在角色被遮挡(处于更深层的后方时)用新的shader替换原有的shader,所以此处勾选Depth深度并选择greater,注意需要将filter过滤器设置为角色所在图层
同时我们希望角色不被遮挡时使用原有的shader
最后效果如下
射线屏蔽
- 我们希望点击树木时能移动到点击位置的地面,而不是射线与树木碰撞造成无效点击,这里有两个解决办法
方法一:将所有树木图层设置为无视射线
方法二:取消勾选树木的coliider
transform.LookAt
- 将物体的朝向转向另一个物体
Animator设置
- Exit Time指退出时间,即动画播放多久后退出该动画,没有退出时间则一直循环播放
- Fixed Duration指两种动画间的过渡效果
- 添加新的layer区分不同的逻辑层
- weight指权重,blending有override(覆盖)和additive(叠加)两种
CinemaMachineFreeLook
- 一种自由视角的相机
- 缩放和旋转视角由鼠标滚轮和键盘AD控制
- 调整相机类型和滑动范围
- 选中save during play可以在运行中实时修改参数并保存
Physics.OverlapSphere
- 返回一个数组,其中包含与球体接触或位于球体内部的所有碰撞体
- 注意:物体需要有collider组件才能被检测到
bool FoundPlayer() { var colliders = Physics.OverlapSphere(transform.position,sightRadius); foreach (var targrt in colliders) { if (targrt.CompareTag("Player")) { return true; } } return false; }