美文网首页
Unity Character Controller 碰到的穿模

Unity Character Controller 碰到的穿模

作者: 她声音清澈丶 | 来源:发表于2021-03-08 20:06 被阅读0次

    在初次使用Character Controller 时发现当人物跳跃后在桥上或上桥的斜坡上时候,总是会无缘无故的穿过去

    开始寻找时候,以为是Character Controller 的参数Radius半径范围太小了,导致自带的isGrounded方法并没有判断正确得落地,导致我一直控制人物下落问题。更改了参数后,跑了很长一段时间并没有再次出现,以为没有问题了。但隔天无意测试时候,发现并没有好。

    然后推测是Character Controller的某个属性,填写错误,大了或者小了为此我查看了网上的文档或官方文档,发现并没有什么问题,我就以为是我把Character Controller 和Collider 挂在同一物体下导致的一些问题,当我分离他们两个之后发现并不是这个问题。

    因为我并没有使用Character Controller 的碰撞接收OnControllerColliderHit 函数,而使用的Box Collider的OnTriggerEnters和OnTriggerExits 来判定一些碰撞问题,所以我就在测试,当我穿过模型斜坡时,OnControllerColliderHit函数有没有执行,测试发现并没有执行这个函数,也就是说,当我人物和斜坡进行碰撞后,并没有触发碰撞事件。

    感觉是这个问题,继续测试,写了一个固定弧度的方法,来判定,当Character Controller和斜坡接触时,是否会触发碰撞事件。

    我测试发现,当人物的Character Controller刚好落到斜坡的碰撞上,会触发OnControllerColliderHit,但是,当人物下落位移过大,导致人物正好卡成这样时 ,就会导致并没有触发OnControllerColliderHit,此时的isGrounded为false ,这个原因导致逻辑判定还在落地就一直让人物向下位移。

    然后换了个射线检测的方法来判定是否接触地面

    bool IsGroundeds()
     {
             return Physics.Raycast(player.transform.position, Vector3.down, 0.1f);
     }

    请各位大佬指导,这个穿过去之后没有触发OnControllerColliderHit ,并且isGrounded为false是为什么?我终究没有找到原因,但换了另一种解决方式。

    相关文章

      网友评论

          本文标题:Unity Character Controller 碰到的穿模

          本文链接:https://www.haomeiwen.com/subject/vkkmqltx.html