SkinnedMeshCollider.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEditor;
  4. using UnityEngine;
  5. public class SkinnedMeshCollider : MonoBehaviour
  6. {
  7. public BoxCollider boxcCollider;
  8. #if UNITY_EDITOR
  9. [MenuItem("GameObject/Chiva/创建简易骨骼碰撞器", priority = 0)]
  10. public static void CreatCollider()
  11. {
  12. GameObject currentObject = Selection.activeGameObject;
  13. SkinnedMeshRenderer skinnedMeshRenderer = currentObject.GetComponent<SkinnedMeshRenderer>();
  14. if (skinnedMeshRenderer == null) return;
  15. GameObject SkinedCollider = new GameObject(currentObject.name + "_Collider");
  16. SkinedCollider.transform.parent = skinnedMeshRenderer.rootBone;
  17. SkinedCollider.transform.position = currentObject.transform.position;
  18. SkinedCollider.transform.rotation = currentObject.transform.rotation;
  19. BoxCollider collider = SkinedCollider.GetComponent<BoxCollider>() == null
  20. ? SkinedCollider.gameObject.AddComponent<BoxCollider>()
  21. : SkinedCollider.GetComponent<BoxCollider>();
  22. SkinnedMeshCollider skinnedMeshCollider = currentObject.GetComponent<SkinnedMeshCollider>() == null
  23. ? currentObject.AddComponent<SkinnedMeshCollider>()
  24. : currentObject.GetComponent<SkinnedMeshCollider>();
  25. skinnedMeshCollider.boxcCollider = collider;
  26. SetColliderSize(collider, skinnedMeshRenderer.sharedMesh.bounds);
  27. }
  28. public static void SetColliderSize(BoxCollider collider, Bounds bound)
  29. {
  30. collider.center = bound.center;
  31. collider.size = bound.size;
  32. }
  33. #endif
  34. }