這個是我做忍者游戲出現的問題,做個記錄也為以后有人遇到也可以借鑒。因為剛接觸unity,所以對其所知甚少,說錯的地方請指教。
- 問題:角色碰撞牆為什么會先觸發碰撞地面,然后再觸發碰撞牆
- 想要的效果:是角色跑過去碰撞牆是不觸發貼牆向下滑的效果,只是讓它跑的動畫就行
- 出現的結果:角色跑過去后,變成了貼牆下滑的動作,然后就動不了
- 出現這樣的原因:是因為角色的速度太快,所造成的誤差(角色的速度是加力給的,角色加了剛體)
渲染幀的時間跟不上程序處理力速度的時間,所以產生了人物碰撞體碰到了牆,然后碰到了地面了,在渲染下一幀時,因為最后碰到的是地,所以發生碰撞 地面的事件,那它是怎么回來的呢,應該是剛體檢測到牆,然后剛體又回來,就發生了碰撞牆的事件,然后觸發離開地面(這個是我的想法,后來我通過測試,把兩個剛 體放在一起,運行后,他們會分開)
因為碰撞盒是每幀都會監聽的 。 打個比方, 現在有兩幀 第一幀我的人物跟牆的距離還有0.2米 ,第二幀幀渲染時候 我的人物可能已經移動了1米。 如果牆 體是0.5米的厚度,那么碰撞快才會觸發事件 , 那么 你已經超過了牆體。(這句話跟下面圖是一位網友討論時他給的)
- 通過調試的結果:
這調試結果也驗證了猜想。
- 我用的解決方案: