diff options
author | chai <chaifix@163.com> | 2021-08-30 21:11:54 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-08-30 21:11:54 +0800 |
commit | 86ec4522be1d0b932006801c7bf2297adc9f0028 (patch) | |
tree | 551739eaff15f0a1990f997409da8926979ba85a /Assets/Scripts/Unit | |
parent | 07fd372981a16672af23e30816ade14fcb744804 (diff) |
*misc
Diffstat (limited to 'Assets/Scripts/Unit')
-rw-r--r-- | Assets/Scripts/Unit/Collider/ColliderRegistry.cs | 17 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Collider/CollisionSystem.cs | 15 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Component/MonsterAnimation.cs | 10 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Component/MonsterState.cs | 52 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Component/UnitCollider.cs | 10 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/MonsterController.cs | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Events/EventProjectile.cs | 3 | ||||
-rw-r--r-- | Assets/Scripts/Unit/TimelineEventProxy.cs | 7 |
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) |