CharacterController 不会受到scene的重力影响,自带物理碰撞检测,在脱离导航网格的应用场景下(比如飞行),是很有优势的Unity原生工具组件。如果在复杂的应用场景里,会有多种CC碰撞检测的需求,记录下我碰到的三种碰撞需求和解决方案。
一、和场景碰撞器
需要产生碰撞效果,让CC停止。只需要在场景里刷上碰撞器,并加上OnControllerColliderHit回调,处理逻辑。
二、和UI碰撞器
CC遇到UI上的BoxCollider也会产生碰撞效果,有个小招是把UI的Collider的物理效果去掉
勾上IsTrigger,就不会和CC产生碰撞,然而这种方法实在上不了台面,还会影响UI。Unity的物理管理器提供了多种数据配置,可以设置层碰撞矩阵
在相互不作用的层上勾去。
三、CharacterController 和CharacterController之间的碰撞
CC之间 大部分时候都不需要碰撞作用的吧,不理解为什么CharacterController没有一个明显的屏蔽基佬的标志,
一开始看介绍以为CharacterController.detectCollisions 可