• unity3d关于碰撞问题


      这个是我做忍者游戏出现的问题,做个记录也为以后有人遇到也可以借鉴。因为刚接触unity,所以对其所知甚少,说错的地方请指教。

    • 问题:角色碰撞墙为什么会先触发碰撞地面,然后再触发碰撞墙
    • 想要的效果:是角色跑过去碰撞墙是不触发贴墙向下滑的效果,只是让它跑的动画就行

    • 出现的结果:角色跑过去后,变成了贴墙下滑的动作,然后就动不了

    • 出现这样的原因:是因为角色的速度太快,所造成的误差(角色的速度是加力给的,角色加了刚体)

           渲染帧的时间跟不上程序处理力速度的时间,所以产生了人物碰撞体碰到了墙,然后碰到了地面了,在渲染下一帧时,因为最后碰到的是地,所以发生碰撞      地面的事件,那它是怎么回来的呢,应该是刚体检测到墙,然后刚体又回来,就发生了碰撞墙的事件,然后触发离开地面(这个是我的想法,后来我通过测试,把两个刚  体放在一起,运行后,他们会分开)

          因为碰撞盒是每帧都会监听的 。 打个比方, 现在有两帧   第一帧我的人物跟墙的距离还有0.2米 ,第二帧帧渲染时候  我的人物可能已经移动了1米。 如果墙    体是0.5米的厚度,那么碰撞快才会触发事件 , 那么 你已经超过了墙体。(这句话跟下面图是一位网友讨论时他给的)

    • 通过调试的结果:

      这调试结果也验证了猜想。

    • 我用的解决方案:
  • 相关阅读:
    Chino 操作系统开发日志 (1)
    将Asp.Net Core和corefx移植到.Net 4.0
    C++编写操作系统(1):基于 EFI 的 Bootloader
    第二次作业:支付宝手机软件分析
    第一次作业:以人为鉴 可以明得失
    个人附加作业
    个人作业3---个人总结
    结对编程2---单元测试
    个人作业2---必应词典案例分析
    结对编程作业1
  • 原文地址:https://www.cnblogs.com/lsgsanxiao/p/4653026.html
Copyright © 2020-2023  润新知