Exemplo n.º 1
0
 public void Setup(EnemyDummy dummy)
 {
     speed     = dummy.Speed;
     maxHp     = dummy.MaxHp;
     currentHp = maxHp;
     damage    = dummy.Damage;
     gold      = dummy.Gold;
 }
    public void SpawnEnemy(Enemy enemy)
    {
        EnemyDummy dummy        = EnemyPool.Instance.GetObject();
        Vector2    randomOffset = new Vector2(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)) * radius;

        dummy.Setup(enemy, gameObject.transform.position, randomOffset);
        dummy.SetDestination(nextNavEntity);
    }
Exemplo n.º 3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        EnemyDummy something = collision.GetComponent <EnemyDummy>();

        if (something != null && !targets.Contains(something))
        {
            targets.Add(something);
        }
    }
    private void Shoot(EnemyDummy target)
    {
        ProjectileDummy dummy = ProjectilePool.Instance.GetObject();

        dummy.Setup(projectile, gameObject.transform.position + (Vector3)shootingPoint, target, damage, splash);
        Transform smokeEffectTransform = SmokeEffectPool.Instance.GetObject().transform;

        smokeEffectTransform.localScale = Vector3.one * blastScale;
        IsometricLocomotion.SetPositionElevated(smokeEffectTransform, (Vector2)gameObject.transform.position + new Vector2(shootingPoint.x, 0), shootingPoint.y);
    }
Exemplo n.º 5
0
        public static Enemy createFromDummy(EnemyDummy dummy)
        {
            switch (dummy.type)
            {
            case GreenEnemy.TYPE:
                return(new GreenEnemy(dummy.position));

            case BlueEnemy.TYPE:
                return(new BlueEnemy(dummy.position));

            case RedEnemy.TYPE:
                return(new RedEnemy(dummy.position));
            }
            return(null);
        }
 public void Setup(Projectile projectile, Vector3 projectileSpawnPosition, EnemyDummy target, int projectileDamage, bool splash)
 {
     //yeah
     this.target           = target;
     damage                = projectileDamage;
     speed                 = projectile.Speed;
     this.splash           = splash;
     trajectory            = projectile.TrajectoryPeak;
     spriteRenderer.sprite = projectile.Sprite;
     transform.localScale  = Vector3.one * projectile.Scale;
     impactScale           = projectile.ImpactScale;
     destination           = target.transform.position;
     locomotion.ResetElevation();
     IsometricLocomotion.SetPositionOnPlane(transform, projectileSpawnPosition);
     distanceToTarget = ((Vector2)transform.position - destination).magnitude;
     moveDirection    = (destination - (Vector2)transform.position).normalized;
     distanceTraveled = 0;
 }
Exemplo n.º 7
0
    public EnemyDummy PickTarget()
    {
        float      minDistance = Mathf.Infinity;
        EnemyDummy picked      = null;

        for (int i = targets.Count - 1; i > -1; i--)
        {
            EnemyDummy target = targets[i];
            if (!target.gameObject.activeInHierarchy)
            {
                targets.RemoveAt(i);
                continue;
            }
            if (target.GetGoalDistance() < minDistance)
            {
                minDistance = target.GetGoalDistance();
                picked      = target;
            }
        }
        return(picked);
    }
 public void Tick()
 {
     if (ready)
     {
         EnemyDummy target = targetSeeker.PickTarget();
         if (target != null)
         {
             Shoot(target);
             ready = false;
         }
         else
         {
             return;
         }
     }
     currentTime += Time.deltaTime;
     if (currentTime > interval)
     {
         currentTime = 0;
         ready       = true;
     }
 }
Exemplo n.º 9
0
 private void TakeDamage(EnemyDummy slime)
 {
     slime.Kill();
     _currentNumberOfSlimesUntilDeath--;
 }