unity3d關於碰撞問題

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

  • 問題:角色碰撞牆爲什麼會先觸發碰撞地面,然後再觸發碰撞牆

 

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

 

 

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

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

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

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

  • 通過調試的結果:

 

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

 

  • 我用的解決方案:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章