角色控制器(CharacterController)的碰撞检测功能并不是十分健全,在一个项目中,只能使用CharacterController的碰撞检测,当自身碰到其他物体时,进行一些操作,但是这里需要获取碰到的物体的层级、tag等,简单来说就是需要获取碰到的gameObject,注意是“碰到”,而不是“被碰到”,比如子弹,当子弹碰到他人时,对“他人”进行操作,但是CharacterController如何获取到这个“他人”呢?碰撞flags只能知道是否发生碰撞,OnControllerColliderHit是被碰到,不能使用trigger或者自带的碰撞器,只能用CharacterController的碰撞检测
如果解决不了,这里有详细的应用场景,看看能不能用其他方式解决
此脚本属于子弹,因个别类型的子弹速度过快,导致OnTriggerEnter有时无法触发,rigedbody中的碰撞模式已经调整过了,4个模式均不行,可能被子弹打到的物体的模式也都试过了,移动用的是rigedbody.movePosition,只能用角色控制器,但是他是能检测到碰撞,但是仅仅是在移动上表现出来,例如拐弯绕过敌人,但是我希望他能够碰到以后进行伤害操作,就需要获取敌人的游戏物体,尽量使用角色控制器解决,其他的用射线之类的比较麻烦
如果针对子弹的检测,一般比较常规的方法就是使用射线。 当子弹速度比较快,游戏帧率过低,两桢之间的碰撞体有时会被直接穿过,造成无法击中目标,大多数做法是使用射线“瞄准肯定打的到”,必要可以添加随即的方向扰动,增加真实感