summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-08-30 21:11:54 +0800
committerchai <chaifix@163.com>2021-08-30 21:11:54 +0800
commit86ec4522be1d0b932006801c7bf2297adc9f0028 (patch)
tree551739eaff15f0a1990f997409da8926979ba85a /Assets/Scripts/Unit
parent07fd372981a16672af23e30816ade14fcb744804 (diff)
*misc
Diffstat (limited to 'Assets/Scripts/Unit')
-rw-r--r--Assets/Scripts/Unit/Collider/ColliderRegistry.cs17
-rw-r--r--Assets/Scripts/Unit/Collider/CollisionSystem.cs15
-rw-r--r--Assets/Scripts/Unit/Component/MonsterAnimation.cs10
-rw-r--r--Assets/Scripts/Unit/Component/MonsterState.cs52
-rw-r--r--Assets/Scripts/Unit/Component/UnitCollider.cs10
-rw-r--r--Assets/Scripts/Unit/Controller/MonsterController.cs8
-rw-r--r--Assets/Scripts/Unit/Events/EventProjectile.cs3
-rw-r--r--Assets/Scripts/Unit/TimelineEventProxy.cs7
8 files changed, 100 insertions, 22 deletions
diff --git a/Assets/Scripts/Unit/Collider/ColliderRegistry.cs b/Assets/Scripts/Unit/Collider/ColliderRegistry.cs
index d51e9615..408ce5a4 100644
--- a/Assets/Scripts/Unit/Collider/ColliderRegistry.cs
+++ b/Assets/Scripts/Unit/Collider/ColliderRegistry.cs
@@ -5,6 +5,7 @@ using UnityEngine;
public class ColliderRegistry : Singleton<ColliderRegistry>
{
public List<UnitCollider> colliders = new List<UnitCollider>();
+ public List<Projectile> projectiles = new List<Projectile>();
public void AddCollider(UnitCollider collider)
{
@@ -16,5 +17,19 @@ public class ColliderRegistry : Singleton<ColliderRegistry>
{
if (colliders.Contains(collider))
colliders.Remove(collider);
- }
+ }
+
+
+ public void AddProjectile(Projectile projectile)
+ {
+ if (!projectiles.Contains(projectile))
+ projectiles.Add(projectile);
+ }
+
+ public void RemoveProjectile(Projectile projectile)
+ {
+ if (projectiles.Contains(projectile))
+ projectiles.Remove(projectile);
+ }
+
} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/Collider/CollisionSystem.cs b/Assets/Scripts/Unit/Collider/CollisionSystem.cs
index d5c96d0c..0e3c92f0 100644
--- a/Assets/Scripts/Unit/Collider/CollisionSystem.cs
+++ b/Assets/Scripts/Unit/Collider/CollisionSystem.cs
@@ -42,6 +42,7 @@ public class CollisionSystem : SingletonMB<CollisionSystem>
m_UnitColliderCount = registry.colliders != null ? registry.colliders.Count : 0;
SolveHit();
+ SolveProjectile();
}
// hitbox <-> hurtbox
@@ -102,10 +103,16 @@ public class CollisionSystem : SingletonMB<CollisionSystem>
ListPool<ColliderDescriptor>.Release(hitboxes);
ListPool<ColliderDescriptor>.Release(hurtboxes);
- }
-
- // throwbox <-> hurtbox
- void SolveThrow()
+ }
+
+ void SolveProjectile()
+ {
+
+ }
+
+
+ // throwbox <-> hurtbox
+ void SolveThrow()
{
}
diff --git a/Assets/Scripts/Unit/Component/MonsterAnimation.cs b/Assets/Scripts/Unit/Component/MonsterAnimation.cs
index a59443e0..4db4b07f 100644
--- a/Assets/Scripts/Unit/Component/MonsterAnimation.cs
+++ b/Assets/Scripts/Unit/Component/MonsterAnimation.cs
@@ -96,5 +96,15 @@ public class MonsterAnimation : UnitAnimation
m_Animator.Play("HitLight", 0, 0);
//m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0);
}
+ public void AnimHitAir()
+ {
+ m_Animator.Play("HitAir", 0, 0);
+ //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0);
+ }
+
+ public void AnimRise()
+ {
+ m_Animator.CrossFade("Rise", 0);
+ }
}
diff --git a/Assets/Scripts/Unit/Component/MonsterState.cs b/Assets/Scripts/Unit/Component/MonsterState.cs
index b1ff9cbd..cd2ed8e5 100644
--- a/Assets/Scripts/Unit/Component/MonsterState.cs
+++ b/Assets/Scripts/Unit/Component/MonsterState.cs
@@ -76,6 +76,10 @@ public class MonsterState : UnitState
public struct HitLightParam { }
+ public struct HitAirParam { }
+
+ public struct RiseParam { }
+
#region Idle
IEnumerator Idle(IdleParam param)
@@ -121,6 +125,54 @@ public class MonsterState : UnitState
{
}
+ #endregion
+
+ #region HitAir
+
+ IEnumerator HitAir(HitAirParam param)
+ {
+ m_Owner.monsterAnimation.AnimHitAir();
+ yield return null;
+ while (true)
+ {
+ bool reachEnd = m_Owner.monsterAnimation.layers[0].playbackNomralizedTime == 1;
+ if (reachEnd)
+ {
+ //yield return new WaitForSeconds(1f);
+ ChangeState(EUnitState.Rise, new RiseParam());
+ }
+ yield return null;
+ }
+ }
+
+ void OnHitAirExit(EUnitState nextState)
+ {
+ }
+
+ #endregion
+
+ #region Rise
+
+ IEnumerator Rise(RiseParam param)
+ {
+ m_Owner.monsterAnimation.AnimRise();
+ yield return null;
+ while (true)
+ {
+ bool reachEnd = m_Owner.monsterAnimation.layers[0].playbackNomralizedTime == 1;
+ if (reachEnd)
+ {
+ ChangeState(EUnitState.Idle, new IdleParam());
+ }
+ yield return null;
+ }
+ }
+
+ void OnRiseExit(EUnitState nextState)
+ {
+ }
+
+
#endregion
diff --git a/Assets/Scripts/Unit/Component/UnitCollider.cs b/Assets/Scripts/Unit/Component/UnitCollider.cs
index f3170d1b..ac9698a8 100644
--- a/Assets/Scripts/Unit/Component/UnitCollider.cs
+++ b/Assets/Scripts/Unit/Component/UnitCollider.cs
@@ -8,7 +8,7 @@ public class UnitCollider : UnitComponent
{
public bool showGizmos;
- private Dictionary<int/*hitbox hash*/, List<int/*unitController hash*/>> hitMask = new Dictionary<int, List<int>>();
+ private Dictionary<int/*hitbox hash*/, List<int/*unitController hash*/>> m_HitMask = new Dictionary<int, List<int>>();
public override void Awake()
{
@@ -49,16 +49,16 @@ public class UnitCollider : UnitComponent
// 动作切换,重置collider mask
public void OnAnimationChange()
{
- hitMask.Clear();
+ m_HitMask.Clear();
}
public void RecordCollision(int colliderHash, int targetHash)
{
List<int> record;
- if (!hitMask.TryGetValue(colliderHash, out record))
+ if (!m_HitMask.TryGetValue(colliderHash, out record))
{
record = new List<int>();
- hitMask.Add(colliderHash, record);
+ m_HitMask.Add(colliderHash, record);
}
record.Add(targetHash);
}
@@ -66,7 +66,7 @@ public class UnitCollider : UnitComponent
public bool CanCollide(int colliderHash, int targetHash)
{
List<int> record;
- if(!hitMask.TryGetValue(colliderHash, out record))
+ if(!m_HitMask.TryGetValue(colliderHash, out record))
{
return true;
}
diff --git a/Assets/Scripts/Unit/Controller/MonsterController.cs b/Assets/Scripts/Unit/Controller/MonsterController.cs
index 29ac9dcd..5dca47d8 100644
--- a/Assets/Scripts/Unit/Controller/MonsterController.cs
+++ b/Assets/Scripts/Unit/Controller/MonsterController.cs
@@ -1,9 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
-#if UNITY_EDITOR
-using UnityEditor;
-#endif
public class MonsterController : UnitController
{
@@ -48,17 +45,16 @@ public class MonsterController : UnitController
}
else if(hitbox.hitResponse == ColliderBox.EHitResponse.HitAir)
{
+ monsterState.ChangeState(MonsterState.EUnitState.HitAir, new MonsterState.HitAirParam());
}
string path = hitbox.sparkPath;
-#if UNITY_EDITOR
- GameObject vfx = AssetDatabase.LoadAssetAtPath<GameObject>(path);
+ GameObject vfx = ResourceManager.Instance.LoadAsset<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/Events/EventProjectile.cs b/Assets/Scripts/Unit/Events/EventProjectile.cs
index 0a85cce9..731c42a9 100644
--- a/Assets/Scripts/Unit/Events/EventProjectile.cs
+++ b/Assets/Scripts/Unit/Events/EventProjectile.cs
@@ -29,4 +29,7 @@ public class EventProjectile : AnimationEventBase
[Tooltip("Initial velocity")]
public Vector3 velocity;
+ [Tooltip("击中效果")]
+ public ColliderBox.EHitResponse hitResponse;
+
}
diff --git a/Assets/Scripts/Unit/TimelineEventProxy.cs b/Assets/Scripts/Unit/TimelineEventProxy.cs
index cb30e900..bb598666 100644
--- a/Assets/Scripts/Unit/TimelineEventProxy.cs
+++ b/Assets/Scripts/Unit/TimelineEventProxy.cs
@@ -3,9 +3,6 @@ using System.Collections;
using System.Reflection;
using System.Collections.Generic;
using UnityEngine;
-#if UNITY_EDITOR
-using UnityEditor;
-#endif
// 执行帧事件
[DisallowMultipleComponent]
@@ -105,8 +102,7 @@ public partial class TimelineEventProxy
if (effect == null)
return;
string path = effect.effectPath;
-#if UNITY_EDITOR
- GameObject prefab = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject)) as GameObject;
+ GameObject prefab = ResourceManager.Instance.LoadAsset<GameObject>(path);
if (prefab != null)
{
GameObject root = new GameObject();
@@ -117,7 +113,6 @@ public partial class TimelineEventProxy
onClear.RunInEditor = true;
onClear.Initialize(new PlayEffectInfo(path, EffectPlayTypes.Oneshot, m_Root, effect.position, effect.rotation, effect.scale, 0, false));
}
-#endif
}
void EventCamera_Shake(AnimationEventBase animEvent)