12345678910111213141516171819202122232425262728293031323334353637383940 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- public class SkinnedMeshCollider : MonoBehaviour
- {
- public BoxCollider boxcCollider;
- #if UNITY_EDITOR
- [MenuItem("GameObject/Chiva/创建简易骨骼碰撞器", priority = 0)]
- public static void CreatCollider()
- {
- GameObject currentObject = Selection.activeGameObject;
- SkinnedMeshRenderer skinnedMeshRenderer = currentObject.GetComponent<SkinnedMeshRenderer>();
- if (skinnedMeshRenderer == null) return;
- GameObject SkinedCollider = new GameObject(currentObject.name + "_Collider");
- SkinedCollider.transform.parent = skinnedMeshRenderer.rootBone;
- SkinedCollider.transform.position = currentObject.transform.position;
- SkinedCollider.transform.rotation = currentObject.transform.rotation;
- BoxCollider collider = SkinedCollider.GetComponent<BoxCollider>() == null
- ? SkinedCollider.gameObject.AddComponent<BoxCollider>()
- : SkinedCollider.GetComponent<BoxCollider>();
- SkinnedMeshCollider skinnedMeshCollider = currentObject.GetComponent<SkinnedMeshCollider>() == null
- ? currentObject.AddComponent<SkinnedMeshCollider>()
- : currentObject.GetComponent<SkinnedMeshCollider>();
- skinnedMeshCollider.boxcCollider = collider;
- SetColliderSize(collider, skinnedMeshRenderer.sharedMesh.bounds);
- }
- public static void SetColliderSize(BoxCollider collider, Bounds bound)
- {
- collider.center = bound.center;
- collider.size = bound.size;
- }
- #endif
- }
|