unity SkinnedMesh 播放動畫時與MeshCollider不同步問題解決方案
阿新 • • 發佈:2018-12-11
unity SkinnedMesh 播放動畫時與MeshCollider不同步問題解決方案
unity播放形變動畫時,物體包圍盒與物體不同步。原因是包圍盒沒有更新,並且形變動畫對應的MeshCollider更新的話,代價太大。所以unity雖然提供了機制,但是不提倡使用。核心方法是SkinnedMeshRenderer中有一個函式:BakeMesh。以下是對該函式的解釋:
// 摘要: // Creates a snapshot of SkinnedMeshRenderer and stores it in mesh. // // 引數: // mesh: // A static mesh that will receive the snapshot of the skinned mesh. [WrapperlessIcall] public void BakeMesh(Mesh mesh);
核心方法是在update中呼叫該方法。
public SkinnedMeshRenderer meshRenderer; public MeshCollider collider; void Update() { Mesh colliderMesh = new Mesh(); meshRenderer.BakeMesh(colliderMesh); //更新mesh collider.sharedMesh = null; collider.sharedMesh = colliderMesh; //將新的mesh賦給meshcollider }