using System.Collections; using System.Collections.Generic; using UnityEngine; //public interface Interactable //{ // void OnHit(); // void OnHurt(); // void OnGrab(); //} public class UnitController : MonoBehaviour/*, Interactable*/ { // 角色共有的组件 public UnitRender unitRender; public UnitState unitState; public UnitAnimation unitAnimation; public UnitSkill unitSkill; public UnitRootMotion unitRootMotion; public UnitCollider unitCollider; public GameObject unitObj; // 角色模型 public bool isTowardRight { get { return transform.rotation.eulerAngles.y == 0 ? true : false; } } public virtual bool isOnGround { get { return transform.position.y <= 0f; } } public bool isInAir { get { return !isOnGround; } } private string m_Folder; public string folder { get { return m_Folder; } } public virtual void Initialize( GameObject obj , string folder) { unitObj = obj; m_Folder = folder; unitRender = gameObject.GetOrAddComponent(); unitRender.Initialize(); unitState = gameObject.GetOrAddComponent(); unitState.Initialize(); unitAnimation = gameObject.GetOrAddComponent(); unitAnimation.Initialize(); unitSkill = gameObject.GetOrAddComponent(); unitSkill.Initialize(); unitRootMotion = gameObject.GetOrAddComponent(); unitRootMotion.Initialize(); unitCollider = gameObject.GetOrAddComponent(); unitCollider.Initialize(); } public virtual void Update() { unitRender.OnUpdate(); unitState.OnUpdate(); unitAnimation.OnUpdate(); unitSkill.OnUpdate(); unitRootMotion.OnUpdate(); } public virtual void OnDestroy() { } public virtual void OnHit() { } public virtual void OnHurt() { } public virtual void OnGrab() { } public void SetYPosition(float y) { Vector3 pos = transform.position; pos.y = y; transform.position = pos; } }