public void OnTriggerEnter(Collider collider) { if (m_DamageManager == null) { return; } string message = m_ColliderInfo.GetCollideLayerMessage(collider.gameObject.layer); if (!string.IsNullOrEmpty(message)) { m_OwnSkill.SendMessage(message); } if (!m_OwnSkill.IsDamageEnable) { return; } if (SkillDamageManager.IsUserStandUp(collider.gameObject)) { return; } if (m_DamageManager.AddDamagedObject(collider.gameObject)) { UpdateHitCount(); if (m_ColliderInfo.GetAttachConfig().IsAttachEnemy) { AddAttachObject(collider); } else { m_DamageManager.SendImpactToObject(m_DamageManager.GetOwner(), collider.gameObject, m_ColliderInfo.GetStateImpacts(), m_OwnSkill.SkillId, m_CurHitCountId); if (m_DamageInterval > 0) { //Debug.Log("----------add more times obj " + collider.gameObject.name + " time=" + m_OwnSkill.CurTime); AddMoreTimeEffectObject(collider.gameObject); } if (m_IsAlwaysEnterDamage) { m_LeaveDelObjects.Add(collider.gameObject); } m_DamagedObjects.Add(collider.gameObject); } } if (m_DamageManager.IsDamagedEnemy) { m_OwnSkill.SendMessage("oncollide"); } }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { if (curSectionTime >= m_StartTime) { GameObject obj = sender as GameObject; if (null == obj) { return(false); } if (!instance.IsDamageEnable) { return(false); } UnityEngine.Vector3 center = obj.transform.TransformPoint(m_RelativeCenter); Collider[] hits = Physics.OverlapSphere(center, m_Range, TriggerUtil.CHARACTER_LAYER); SkillDamageManager damage_manager = instance.CustomDatas.GetData <SkillDamageManager>(); if (damage_manager == null) { damage_manager = new SkillDamageManager(obj); instance.CustomDatas.AddData <SkillDamageManager>(damage_manager); } if (m_IsShowTip) { GameObject circle = TriggerUtil.DrawCircle(center, m_Range, m_Color); GameObject.Destroy(circle, m_ShowTime / 1000.0f); } long hit_count_id = TriggerUtil.NextHitCountId(); for (int i = 0; i < hits.Length; i++) { if (!SkillDamageManager.IsEnemy(obj, hits[i].gameObject)) { continue; } if (SkillDamageManager.IsUserStandUp(hits[i].gameObject)) { continue; } if (!damage_manager.IsContainObject(hits[i].gameObject)) { damage_manager.IsDamagedEnemy = true; damage_manager.SendImpactToObject(obj, hits[i].gameObject, m_StateImpacts, instance.SkillId, hit_count_id); if (!m_IsClearWhenFinish) { damage_manager.AddDamagedObject(hits[i].gameObject); } } } /* * foreach (Collider hit in hits) { * if (!SkillDamageManager.IsEnemy(obj, hit.gameObject)) { * continue; * } * if (SkillDamageManager.IsUserStandUp(hit.gameObject)) { * continue; * } * if (!damage_manager.IsContainObject(hit.gameObject)) { * damage_manager.IsDamagedEnemy = true; * damage_manager.SendImpactToObject(obj, hit.gameObject, m_StateImpacts, instance.SkillId, hit_count_id); * if (!m_IsClearWhenFinish) { * damage_manager.AddDamagedObject(hit.gameObject); * } * } * }*/ if (damage_manager.IsDamagedEnemy) { instance.SendMessage("oncollide"); } return(false); } else { return(true); } }