U3L19——角色控制器
U3L19——角色控制器
角色控制器
角色控制器是让角色可以受制于碰撞,但是不会被刚体所牵制
如果我们对角色使用刚体判断碰撞,可能会出现一些奇怪的表现
比如:
- 在斜坡上往下滑动
- 不加约束的情况碰撞可能让自己被撞飞
等等
而角色控制器会让角色表现的更加稳定
Unity提供了角色控制器脚本专门用于控制角色
注意:
添加角色控制器后,不用再添加刚体****能检测碰撞函数
能检测触发器函数
能被射线检测
注意!如果使用角色控制器,那就不再建议使用动画上的根运动了!建议关闭Apply Root Motion
我们会通过角色控制器来达到控制角色移动的目的
本章代码关键字
1 | CharacterController //角色控制器类 |
角色控制器的使用
参数相关
- Slope Limit 坡度度数限制,大于该值的斜坡上不去
- Step Offset:台阶偏移值,单位为米,低于这个值的台阶才能上去,该值不能大于角色控制器的高度
- Skin Width:皮肤的宽度,
两个碰撞体可以穿透彼此最大的皮肤宽度,较大的值可以减少抖动,
较小的值可能导致角色卡住,建议设置为半径的10% - MinMoveDistance:最小移动距离,
大多数情况下为0,可以用来减少抖动
代码相关
首先需要获取该对象的角色控制器
1 | public class Lesson59 : MonoBehaviour |
关键参数
是否接触了地面
1 | if (characterController.isGrounded) |
关键方法
受重力作用的移动
1 | characterController.SimpleMove(Vector3.forward * 10 * Time.deltaTime); |
不受重力作用的移动
1 | characterController.Move(Vector3.forward * 10 * Time.deltaTime); |
角色控制器碰撞函数
当角色控制器想要判断和别的碰撞器产生碰撞时 使用该函数 使用方法和和碰撞检测函数差不多
注意!OnCollisionEnter() 对角色控制器没有用,检测触发器OnTriggerEnter()可以使用
1 | private void OnControllerColliderHit(ControllerColliderHit hit) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!