这个是我做忍者游戏出现的问题,做个记录也为以后有人遇到也可以借鉴。因为刚接触unity,所以对其所知甚少,说错的地方请指教。
- 问题:角色碰撞墙为什么会先触发碰撞地面,然后再触发碰撞墙
- 想要的效果:是角色跑过去碰撞墙是不触发贴墙向下滑的效果,只是让它跑的动画就行
- 出现的结果:角色跑过去后,变成了贴墙下滑的动作,然后就动不了
- 出现这样的原因:是因为角色的速度太快,所造成的误差(角色的速度是加力给的,角色加了刚体)
渲染帧的时间跟不上程序处理力速度的时间,所以产生了人物碰撞体碰到了墙,然后碰到了地面了,在渲染下一帧时,因为最后碰到的是地,所以发生碰撞 地面的事件,那它是怎么回来的呢,应该是刚体检测到墙,然后刚体又回来,就发生了碰撞墙的事件,然后触发离开地面(这个是我的想法,后来我通过测试,把两个刚 体放在一起,运行后,他们会分开)
因为碰撞盒是每帧都会监听的 。 打个比方, 现在有两帧 第一帧我的人物跟墙的距离还有0.2米 ,第二帧帧渲染时候 我的人物可能已经移动了1米。 如果墙 体是0.5米的厚度,那么碰撞快才会触发事件 , 那么 你已经超过了墙体。(这句话跟下面图是一位网友讨论时他给的)
- 通过调试的结果:
这调试结果也验证了猜想。
- 我用的解决方案: