From 07fd372981a16672af23e30816ade14fcb744804 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 30 Aug 2021 13:49:30 +0800 Subject: =?UTF-8?q?=E5=87=BB=E4=B8=AD=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/Unit/Controller/MonsterController.cs | 41 ++++++++++++++++++++-- Assets/Scripts/Unit/Controller/PCController.cs | 21 ++++++++++- Assets/Scripts/Unit/Controller/UnitController.cs | 16 +++++++-- 3 files changed, 73 insertions(+), 5 deletions(-) (limited to 'Assets/Scripts/Unit/Controller') diff --git a/Assets/Scripts/Unit/Controller/MonsterController.cs b/Assets/Scripts/Unit/Controller/MonsterController.cs index ba738dfc..29ac9dcd 100644 --- a/Assets/Scripts/Unit/Controller/MonsterController.cs +++ b/Assets/Scripts/Unit/Controller/MonsterController.cs @@ -1,9 +1,21 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif public class MonsterController : UnitController { + public override UnitType type { get { return UnitType.Monster; } } + + public Vector3 center + { + get + { + return GetComponentInChildren().bounds.center; + } + } public override void Initialize(GameObject obj, string folder) { @@ -19,9 +31,34 @@ public class MonsterController : UnitController public override void Update() { base.Update(); + } - + public override void OnHit(CollisionInfo info) + { } + public override void OnGetHit(CollisionInfo info) + { + ColliderBox hitbox = info.collider.colliderInfo.collider; + Debug.Assert(hitbox.type == ColliderBox.EColliderType.HitBox); + + if(hitbox.hitResponse == ColliderBox.EHitResponse.Light) + { + monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam()); + } + else if(hitbox.hitResponse == ColliderBox.EHitResponse.HitAir) + { + } + + string path = hitbox.sparkPath; +#if UNITY_EDITOR + GameObject vfx = AssetDatabase.LoadAssetAtPath(path); + if(vfx != null) + { + GameObject go = GameObject.Instantiate(vfx); + go.transform.position = center; + } +#endif + } -} +} \ No newline at end of file diff --git a/Assets/Scripts/Unit/Controller/PCController.cs b/Assets/Scripts/Unit/Controller/PCController.cs index 5ad3abc1..93228d31 100644 --- a/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Assets/Scripts/Unit/Controller/PCController.cs @@ -8,7 +8,9 @@ public class PCController : UnitController { public static PCController instance; - private void Awake() + public override UnitType type { get { return UnitType.PC; } } + + private void Awake() { instance = this; } @@ -29,4 +31,21 @@ public class PCController : UnitController base.Update(); } + public override void OnHit(CollisionInfo info) + { + } + + public override void OnGetHit(CollisionInfo info) + { + } + + public override void OnGrab() + { + } + + public override void OnPull() + { + } + + } diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs index b1db29d4..3568cb4e 100644 --- a/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Assets/Scripts/Unit/Controller/UnitController.cs @@ -11,6 +11,15 @@ using UnityEngine; public class UnitController : MonoBehaviour/*, Interactable*/ { + public enum UnitType + { + PC, + Monster, + Prop, + } + + public virtual UnitType type { get; } + // 角色共有的组件 public UnitRender unitRender; @@ -106,11 +115,11 @@ public class UnitController : MonoBehaviour/*, Interactable*/ { } - public virtual void OnHit() + public virtual void OnHit(CollisionInfo info) { } - public virtual void OnHurt() + public virtual void OnGetHit(CollisionInfo info) { } @@ -118,6 +127,9 @@ public class UnitController : MonoBehaviour/*, Interactable*/ { } + public virtual void OnPull() + { + } public void SetYPosition(float y) { -- cgit v1.1-26-g67d0