diff options
author | chai <chaifix@163.com> | 2022-03-10 14:07:40 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-03-10 14:07:40 +0800 |
commit | 22891bf59032ba88262824255a706d652031384b (patch) | |
tree | 7595439ba9966c9402d37e37cee5e8cf098757d5 /Assets/Scripts/Unit/Components/UnitCollider.cs | |
parent | 8b04ea73e540067f83870b61d89db4868fea5e8a (diff) |
* move folder
Diffstat (limited to 'Assets/Scripts/Unit/Components/UnitCollider.cs')
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitCollider.cs | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/Assets/Scripts/Unit/Components/UnitCollider.cs b/Assets/Scripts/Unit/Components/UnitCollider.cs deleted file mode 100644 index 3fd9a6dc..00000000 --- a/Assets/Scripts/Unit/Components/UnitCollider.cs +++ /dev/null @@ -1,123 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -// 角色当前的碰撞盒 -[DisallowMultipleComponent] -public class UnitCollider : UnitComponent -{ - public bool showGizmos; - - private Dictionary<int/*hitbox hash*/, List<int/*unitController hash*/>> m_HitMask = new Dictionary<int, List<int>>(); - - public override void Awake() - { - base.Awake(); - - ColliderRegistry.Instance.AddCollider(this); - } - - public override void OnDestroy() - { - ColliderRegistry.Instance.RemoveCollider(this); - - base.OnDestroy(); - } - - public override void Initialize() - { - base.Initialize(); - showGizmos = true; - } - - // 返回当前激活的对应类型的碰撞盒数据 - public ColliderInfo[] GetCurrentBoxesInfoByType(ColliderBox.EColliderType type, int layer = 0) - { - var layerInfo = m_Owner.unitAnimation.layers[0]; - AnimationData animData = layerInfo.animationData; - AnimatorClipInfo[] clipInfos = layerInfo.clipsInfo; - //if(clipInfos == null || clipInfos.Length == 0) - //{ - // return null; - //} - float playbackTime = layerInfo.playbackNormalizedTime * clipInfos[0].clip.length; - //float playbackTime = layerInfo.playbackRealTimeInSeconds; - ColliderInfo[] infos = animData.GetActiveCollidersInfo(type, playbackTime); - return infos; - } - - // 动作切换,重置collider mask - public void OnAnimationChange() - { - m_HitMask.Clear(); - } - - public void RecordCollision(int colliderHash, int targetHash) - { - List<int> record; - if (!m_HitMask.TryGetValue(colliderHash, out record)) - { - record = new List<int>(); - m_HitMask.Add(colliderHash, record); - } - record.Add(targetHash); - } - - public bool CanCollide(int colliderHash, int targetHash) - { - List<int> record; - if(!m_HitMask.TryGetValue(colliderHash, out record)) - { - return true; - } - return !record.Contains(targetHash); - } - -#if UNITY_EDITOR - - // 绘制collider调试 - public void OnDrawGizmos() - { - if (!showGizmos) - return; - - Vector3 unitPos = m_Owner.transform.position; - - OnDrawColliders(ColliderBox.EColliderType.HurtBox, Color.green); - OnDrawColliders(ColliderBox.EColliderType.HitBox, Color.red); - } - - void OnDrawColliders(ColliderBox.EColliderType type, Color color) - { - ColliderInfo[] boxes = GetCurrentBoxesInfoByType(type); - if (boxes == null || boxes.Length == 0) - return; - Vector3 unitPos = m_Owner.transform.position; - Quaternion right = Quaternion.Euler(0, 0, 0); - Vector3 fac = new Vector3(1,1, m_Owner.transform.forward.normalized == Vector3.forward ? 1 : -1); - Color oldC = Gizmos.color; - Gizmos.color = color * 0.5f; - for (int i = 0; i < boxes.Length; ++i) - { - var box = boxes[i]; - if (!box.isValid) - continue; - Vector3 localPos = m_Owner.transform.rotation * box.position; - Vector3 localSize = box.size; - var pivot = box.pivot; - Vector3 pos = Vector3.zero; // gizmo位置 - switch (pivot) - { - case ColliderBox.Pivot.MiddleBottom: - localPos.y += localSize.y / 2; - break; - } - pos = unitPos + Vector3.Scale(localPos, fac); - Gizmos.DrawCube(pos, localSize); - } - Gizmos.color = oldC; - } - -#endif - -} |