protected override void DamageEvent(float[] _Damage, float[] _CalculateDamage, int[] _DamageType, float _CalculateFullDamage, bool _Critical, Character _Attacker) { base.DamageEvent(_Damage, _CalculateDamage, _DamageType, _CalculateFullDamage, _Critical, _Attacker); LifeTimerWithObjectPool effect = ObjectPool.GetObject <LifeTimerWithObjectPool>(((E_DAMAGETYPE)_DamageType[0]).ToString()); // 데미지 이팩트 if (effect) { effect.Initialize(); effect.transform.localScale = Vector3.one * (m_BodyCollider.radius * 2.0f); effect.transform.position = transform.position + new Vector3(0.0f, m_BodyCollider.center.y, 0.0f); effect.gameObject.SetActive(true); } float YOffset = 0.0f; for (int i = 0; i < _DamageType.Length; ++i) { Billboard b = ObjectPool.GetObject <Billboard>("DamageText"); if (b) { b.gameObject.SetActive(true); b.Initialize(_Critical ? ((int)_CalculateDamage[i]).ToString() + "!!" : ((int)_CalculateDamage[i]).ToString(), transform.position + new Vector3(0.0f, 1.0f + (m_BodyCollider.height * 0.5f + m_BodyCollider.center.y + YOffset), 0.0f), 2.0f); b.SetColor(Common.m_DamageColor[_DamageType[i]]); YOffset += 0.33f; } } if (m_Health <= 0.0f && m_PhotonView.IsMine) { SetStateAndAnimationNetwork(E_ANIMATION.DEAD, 0.15f, 1.0f, 0.0f); return; } if (m_PlayHitAnimation) { m_Animator.CrossFade("Hit", 0.1f); SetFreeze(0.5f); } if (m_IsAutoPlay) { float damage = 0.0f; for (int i = 0; i < _Damage.Length; ++i) { damage += _Damage[i]; } Character target = null; HateTarget t = null; target = _Attacker as Character; if (target != null) { if (m_DicHateTarget.TryGetValue(target.gameObject.GetInstanceID(), out t)) { t.m_Hate += damage; } else { m_DicHateTarget.Add(target.gameObject.GetInstanceID(), new HateTarget(target, damage)); } } } }