using System.Collections; using System.Collections.Generic; using UnityEngine; public enum PrimitiveType { None, Ball, Box } /// /// 物理碰撞体基类 /// 对于格斗游戏来说只需要Box和Ball两种 /// public abstract class PhysicsPrimitive : MonoBehaviour { public virtual PrimitiveType Type { get { return PrimitiveType.None; } } /// /// 世界坐标,物理模拟是在世界空间,本地坐标没有意义 /// public Vector3 Position { get { return transform.TransformPoint(m_Center); } } /// /// 中心点在本地空间的位置 /// public Vector3 m_Center; [SerializeField] /// /// 这个primitive是否参与物理计算,用来快速给物体取消和恢复重力影响 /// protected bool m_IsActive; public bool IsActive { get { return m_IsActive; } } /// /// 唯一ID /// protected int m_ID; public int ID { get { return m_ID; } } [SerializeField] protected PhysicsGroup m_Group; public PhysicsGroup Group { get { return m_Group; } } [SerializeField] protected PhysicsTag m_Tag; public PhysicsTag Tag { get { return m_Tag; } } [SerializeField] protected string m_Title; public string Title { get { return m_Title; } } [SerializeField] protected string m_Desc; public string Desc { get { return m_Desc; } } /// /// 初始化,设置一些公共数据 /// protected void OnInit() { m_ID = UIDManager.Acquire(); } protected Color Color_Green = new Color(0,1, 0, 0.5f); [SerializeField] protected Color m_HintColor = new Color(0, 0, 0, 0.5f); [Tooltip("Physics body, leave blank and primitive will be static.")] [SerializeField] protected PhysicsBody m_Body; }