Esempio n. 1
0
    public void DoAttack()
    {
        TdUnit target;

        if (m_nextEffectTrigger == null || !m_nextEffectTrigger.TryGetTarget(out target))
        {
            m_nextEffectTrigger = null;
            m_nextAttackData    = null;
            return;
        }

        if (m_nextAttackData.GetType() == typeof(ArtilleryData))
        {
            var artilleryProjectile = Instantiate(m_artilleryProjectile, m_canon.transform.position, Quaternion.identity, m_canon).GetComponent <ArtilleryProjectile>();
            if (artilleryProjectile != null)
            {
                artilleryProjectile.Init((ProjectileData)m_nextAttackData, target.transform.position, GetFinalStat(EStat.AttackBuff));
            }
        }
        else if (m_nextAttackData.GetType() == typeof(HomingProjectileData))
        {
            var homingProjectile = Instantiate(m_homingProjectile, m_canon.transform.position, Quaternion.identity, m_canon).GetComponent <HomingProjectile>();
            if (homingProjectile != null)
            {
                homingProjectile.Init((ProjectileData)m_nextAttackData, target, GetFinalStat(EStat.AttackBuff));
            }
        }
        else if (m_nextAttackData.GetType() == typeof(InstantAttackData))
        {
            var instantAttackData = (InstantAttackData)m_nextAttackData;
            if (instantAttackData.m_onHitVfx != null)
            {
                Instantiate(instantAttackData.m_onHitVfx, target.transform.position, Quaternion.identity, target.transform);
            }
            target.Damage(Projectile.GetFinalDamage(m_nextAttackData, target, GetFinalStat(EStat.AttackBuff)));
        }

        m_nextEffectTrigger = null;
        m_nextAttackData    = null;
    }
Esempio n. 2
0
 protected void Attack(AttackData data, AttackEffectTrigger trigger)
 {
     m_nextAttackData    = data;
     m_nextEffectTrigger = trigger;
     m_animator.SetTrigger(ATTACK_TRIGGER);
 }