Unity解決物體綁定剛體後帶來的一些晃動問題

今天在做一個小Demo時,遇到了這樣一個問題:

其中人物在移動時敵人身上的瞄準標記總是在晃動,特別是當人物貼牆走時,晃動更加明顯。

分析問題後,因爲敵人身上的瞄準標記是人物的子物體,而人物移動的方式是通過剛體施加不同方向的力實現的,所以猜測可能是剛體施加力時標記也受到了力的作用(在與牆發生碰撞時同樣會產生力的作用),又因爲代碼中的邏輯是使瞄準標記的位置和敵人的位置相同,所以會出現晃動問題。

解決問題的方法也很簡單,只要在每次設置瞄準標記位置與敵人位置相同時將瞄準標記設置爲敵人的子物體(這裏父物體的選取最好選靜止的,如果沒有靜止的物體可以選不是在剛體的作用下運動的),由於標記脫離了人物,所以在人物移動時不會轉圈,這樣效果看起來也不是很好,這時可以將標記的旋轉設置爲人物的旋轉,即可解決所有問題。

代碼:

//mark.transform.position = nearestEnemy.transform.position;//有問題的代碼
mark.transform.SetParent(nearestEnemy.transform);
mark.transform.localPosition = Vector3.zero;
mark.transform.localRotation = transform.rotation; 
mark.SetActive(true);

 

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