summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit/Controller
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-08-30 13:49:30 +0800
committerchai <chaifix@163.com>2021-08-30 13:49:30 +0800
commit07fd372981a16672af23e30816ade14fcb744804 (patch)
treeabae0cc59048b230d5caa5326afa71caddf863ee /Assets/Scripts/Unit/Controller
parente5faa213bae57d3d7a92ceb078b4d1ddbe3c2f0c (diff)
击中反馈
Diffstat (limited to 'Assets/Scripts/Unit/Controller')
-rw-r--r--Assets/Scripts/Unit/Controller/MonsterController.cs41
-rw-r--r--Assets/Scripts/Unit/Controller/PCController.cs21
-rw-r--r--Assets/Scripts/Unit/Controller/UnitController.cs16
3 files changed, 73 insertions, 5 deletions
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<Renderer>().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<GameObject>(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)
{