예제 #1
0
 public IceEffect(IDamageable target, ISlowable slowable)
 {
     this.target          = target;
     this.slowable        = slowable;
     this.effectComponent = Resources.Load <EffectComponent>("EffectComponent_ice");
     this.duration        = effectComponent.duration;
 }
예제 #2
0
    void OnTriggerExit2D(Collider2D collider)
    {
        ISlowable slowable = collider.gameObject.GetComponent <ISlowable>();

        if (slowable != null)
        {
            slowable.unSlowed();
        }
    }
 void checkCurrentEnemyValidity()
 {
     if (isThereAnEnemyNearby())
     {
         checkIfEnemyChanged();
     }
     else
     {
         enemy          = null;
         enemyISlowable = null;
     }
 }
예제 #4
0
 public override void Fire()
 {
     shotCD += reloadSpeed;
     // slow all units within it's radius by a percentage.
     foreach (GameObject x in countEnemiesInCollider.creepsInsideCollider)
     {
         ISlowable slow = x.GetComponent <ISlowable>();
         if (slow != null)
         {
             slow.BeSlowed(howMuchToSlowEnemies);
         }
     }
 }
예제 #5
0
 private void Start()
 {
     mySlowable = GetComponent <ISlowable>();
     if (mySlowable != null)
     {
         mySlowable.OnSlowed  += OnSlowed;
         mySlowable.OnSlowEnd += OnEndSlow;
     }
     myRigidBody                = GetComponentInChildren <Rigidbody>();
     myRigidBody.useGravity     = false;
     myRigidBody.freezeRotation = true;
     gravityForceHolder         = myGravity.GravityForce;
 }
    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.name == "Player")
        {
            Player player = other.GetComponent <Player>();
            player.isInSlowZone = false;
        }
        ISlowable slow = other.gameObject.GetComponent <ISlowable>();

        if (slow != null)
        {
            _slowableObjects.Remove(slow);
            slow.SetMaxSpeed();
        }
    }
예제 #7
0
    public override void UseActive(Vector3 position)
    {
        if (enemyLayer == 0)
        {
            enemyLayer = LayerMask.GetMask("Enemy");
        }
        int nTurrets = Physics.OverlapSphereNonAlloc(position, activeRange, colsCache, enemyLayer);

        for (int i = 0; i < nTurrets; i++)
        {
            ISlowable enemy = colsCache[i].GetComponent <ISlowable>();
            if (enemy != null)
            {
                enemy.Slow(slowTime, 0.5f);
            }
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "Player")
        {
            Player player = other.GetComponent <Player>();
            player.isInSlowZone = true;
        }
        ISlowable slow = other.gameObject.GetComponent <ISlowable>();

        Debug.Log(other);
        if (slow != null)
        {
            Debug.Log("++" + other);
            _slowableObjects.Add(slow);
            slow.SlowDown();
        }
    }
    private void slowEnemies()
    {
        if (ReferenceEquals(targetDetection, null))
        {
            return;
        }

        float secondsSlowed = turretStats.GetStatValue(StatType.EFFECTDURATION);
        float slowReduction = turretStats.GetStatValue(StatType.SLOWREDUCTION);

        foreach (Transform target in targetDetection.CurrentTargets)
        {
            ISlowable enemyISlowable = target.GetComponent <ISlowable>();
            if (enemyISlowable != null)
            {
                enemyISlowable.Slow(secondsSlowed, slowReduction);
            }
        }
        timer = 0f;
    }
 void changeCurrentEnemy(Transform currentEnemy)
 {
     enemy          = currentEnemy;
     enemyISlowable = enemy.GetComponent <ISlowable>();
 }