Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4049.00元
角色控制器的碰撞
水滕TD发起了问答06-06
3
回复
166
浏览

角色控制器(CharacterController)的碰撞检测功能并不是十分健全,在一个项目中,只能使用CharacterController的碰撞检测,当自身碰到其他物体时,进行一些操作,但是这里需要获取碰到的物体的层级、tag等,简单来说就是需要获取碰到的gameObject,注意是“碰到”,而不是“被碰到”,比如子弹,当子弹碰到他人时,对“他人”进行操作,但是CharacterController如何获取到这个“他人”呢?碰撞flags只能知道是否发生碰撞,OnControllerColliderHit是被碰到,不能使用trigger或者自带的碰撞器,只能用CharacterController的碰撞检测

 

如果解决不了,这里有详细的应用场景,看看能不能用其他方式解决

此脚本属于子弹,因个别类型的子弹速度过快,导致OnTriggerEnter有时无法触发,rigedbody中的碰撞模式已经调整过了,4个模式均不行,可能被子弹打到的物体的模式也都试过了,移动用的是rigedbody.movePosition,只能用角色控制器,但是他是能检测到碰撞,但是仅仅是在移动上表现出来,例如拐弯绕过敌人,但是我希望他能够碰到以后进行伤害操作,就需要获取敌人的游戏物体,尽量使用角色控制器解决,其他的用射线之类的比较麻烦

所有回复
  • 老师_maimai 06-06

    如果针对子弹的检测,一般比较常规的方法就是使用射线。 当子弹速度比较快,游戏帧率过低,两桢之间的碰撞体有时会被直接穿过,造成无法击中目标,大多数做法是使用射线“瞄准肯定打的到”,必要可以添加随即的方向扰动,增加真实感

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 水滕TD 06-06

    目前的话子弹是可视化的,添加了拖尾等,并非是第一人称的子弹检测问题,伤害的检测是真实子弹碰撞后进行的,该怎么解决呢?总不能计算子弹打到的时间,之后在那个时间用执行伤害操作吧

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_maimai 06-12

    https://blog.csdn.net/qq_37160769/article/details/109341055 你可以参考这篇文章

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!