unity3d關於碰撞問題


  這個是我做忍者游戲出現的問題,做個記錄也為以后有人遇到也可以借鑒。因為剛接觸unity,所以對其所知甚少,說錯的地方請指教。

  • 問題:角色碰撞牆為什么會先觸發碰撞地面,然后再觸發碰撞牆

 

  • 想要的效果:是角色跑過去碰撞牆是不觸發貼牆向下滑的效果,只是讓它跑的動畫就行

 

 

  • 出現的結果:角色跑過去后,變成了貼牆下滑的動作,然后就動不了

  • 出現這樣的原因:是因為角色的速度太快,所造成的誤差(角色的速度是加力給的,角色加了剛體)

       渲染幀的時間跟不上程序處理力速度的時間,所以產生了人物碰撞體碰到了牆,然后碰到了地面了,在渲染下一幀時,因為最后碰到的是地,所以發生碰撞      地面的事件,那它是怎么回來的呢,應該是剛體檢測到牆,然后剛體又回來,就發生了碰撞牆的事件,然后觸發離開地面(這個是我的想法,后來我通過測試,把兩個剛  體放在一起,運行后,他們會分開)

      因為碰撞盒是每幀都會監聽的 。 打個比方, 現在有兩幀   第一幀我的人物跟牆的距離還有0.2米 ,第二幀幀渲染時候  我的人物可能已經移動了1米。 如果牆    體是0.5米的厚度,那么碰撞快才會觸發事件 , 那么 你已經超過了牆體。(這句話跟下面圖是一位網友討論時他給的)

  • 通過調試的結果:

 

  這調試結果也驗證了猜想。

 

  • 我用的解決方案:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM