zoukankan      html  css  js  c++  java
  • unity3d关于碰撞问题

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

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

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

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

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

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

    • 通过调试的结果:

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

    • 我用的解决方案:
  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/lsgsanxiao/p/4653026.html
Copyright © 2011-2022 走看看