Beispiel #1
0
    private void OnTriggerEnter2D(Collider2D otherCollider)
    {
        AEnemy enemyScript = otherCollider.gameObject.GetComponent <AEnemy>();

        // Check if the object is an enemy by looking for an enemy script
        if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage
        {
            AudioManager.Instance.PlayOneShot("BoomerangHit");
            enemyScript.TakeDamage(Player.BoomerangDamage);
        }

        Boomerang boomerangScript = otherCollider.gameObject.GetComponent <Boomerang>();

        if ((boomerangScript != null) && (numExplosions > 0)) // If object is another boomerang
        {
            Vector2 vel        = boomerangRb.velocity;
            float   thisAngle  = Mathf.Atan2(vel.y, vel.x) * Mathf.Rad2Deg;
            float   otherAngle = Mathf.Atan2(otherCollider.GetComponent <Rigidbody2D>().velocity.y, otherCollider.GetComponent <Rigidbody2D>().velocity.x) * Mathf.Rad2Deg;

            if (Mathf.Abs(otherAngle - thisAngle) > minAngle)   // Check that the angle between the two boomerangs' velocity is bigger than 10
            {
                Vector2 offset = vel * (0.55f / vel.magnitude); // Offsetting it so that the explosion is at the intersection of the two boomerangs
                Instantiate(_player.boomerangExplosionEffect, this.transform.position + new Vector3(offset.x, offset.y, 0f), Quaternion.AngleAxis(thisAngle, Vector3.forward));
                numExplosions -= 1;
            }
        }
    }
Beispiel #2
0
    public AEnemy Instanciate(AEnemy prefabEnemy)
    {
        Transform instance;
        AEnemy    instanciatedEnemy;

        instance          = Object.Instantiate(prefabEnemy.transform, Position, Quaternion.LookRotation(Vector3.left, Vector3.up));
        instanciatedEnemy = instance.GetComponent <AEnemy>();

        if (instanciatedEnemy != null)
        {
            instanciatedEnemy.transform.Translate(-instanciatedEnemy.GetExtents().Min.x, 0, 0f, Space.World);

            SetEnemy(instanciatedEnemy);
            instanciatedEnemy.SetSpawn(this);
        }
        else
        {
            Object.Destroy(instance);
            Debug.LogWarning("[Spawn] [Instanciate] Null reference. Cannot assign new enemy to spawn.");

            return(null);
        }

        return(instanciatedEnemy);
    }
Beispiel #3
0
 void OnCollisionEnter2D(Collision2D other)
 {
     if (other.gameObject.CompareTag("Enemy") || other.gameObject.CompareTag("Boss"))
     {
         AEnemy _enemy = other.gameObject.GetComponent <AEnemy>();
         TakeDamage(_enemy.Damages); //Prend des dégats en cas de contact avec un ennemie
     }
 }
Beispiel #4
0
 public AWeapon(float _fireDelay, GameObject _owner, GameObject _projectilePrefab, Vector3 _bulletDirection)
 {
     owner = _owner;
     fireDelay = _fireDelay;
     projectilePrefab = _projectilePrefab;
     bulletDirection = _bulletDirection;
     ownerScript = owner.GetComponent<AEnemy>();
 }
Beispiel #5
0
    // ----- [ Constructors ] -------------------------------------------



    public Spawn(Vector2 pos, Vector2 size, int id)
    {
        Position = new Vector3(pos.x, pos.y, 0f);
        Size     = size;

        Id = id;

        _enemy = null;
    }
Beispiel #6
0
 //when enter other collider recycle self
 //exclude layers player bullets
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag == "Enemy")
     {
         AEnemy enemy = other.gameObject.GetComponent <AEnemy> ( );
         enemy.TakeDamage(damage);
     }
     Recycle( );
 }
Beispiel #7
0
        public override void Update(GameTime _gameTime)
        {
            if (!transition && !transitionScreen.isTransition)
            {
                if (KeyboardManager.Instance.IsKeyActivity(Keys.OemTilde.ToString(), KeyActivity.Pressed))
                {
                    using (MapSelection se = new MapSelection())
                    {
                        System.Windows.Forms.DialogResult res = se.ShowDialog();
                        if (res == System.Windows.Forms.DialogResult.OK)
                        {
                            LoadMap(se.GetCleanText());
                        }
                    }
                }

                if (KeyboardManager.Instance.IsKeyActivity(Keys.Enter.ToString(), KeyActivity.Pressed))
                {
                    isPause = !isPause;
                    MusicManager.Instance.Pause();
                }

                if (isPause)
                {
                }
                else if (player.IsDead)
                {
                    player.PlayDeathUpdate(_gameTime, map);
                }
                else
                {
                    map.Update(_gameTime);
                    player.Update(_gameTime, map);

                    for (int i = enemies.Count - 1; i >= 0; i--)
                    {
                        AEnemy enemy = enemies[i];
                        enemy.Update(_gameTime, map, player);
                        if (enemy.IsDead)
                        {
                            enemies.Remove(enemy);
                        }
                    }
                    if (player.ChangeLevel != null)
                    {
                        LoadMap(player.ChangeLevel);
                    }
                }
                GameManager.Instance.Cam.Follow(player.CollisionBox);
            }
            else
            {
                GameManager.Instance.Cam.SetObjectCenter();
                transitionScreen.Update(_gameTime);
            }
        }
Beispiel #8
0
 private void SpawnEnemies()
 {
     for (int i = 0; i < numOfEnemies; ++i)
     {
         Vector2 startPos = new Vector2(transform.position.x + Random.Range(-spawnRadius, spawnRadius), transform.position.y + Random.Range(-spawnRadius, spawnRadius));
         AEnemy  newEnemy = EnemyFactory.CreateEnemy(id, startPos).GetComponent <AEnemy>();
         newEnemy.transform.SetParent(gameObject.transform);
         enemies.Add(newEnemy);
     }
 }
    private void OnTriggerEnter2D(Collider2D otherCollider)
    {
        AEnemy enemyScript = otherCollider.gameObject.GetComponent <AEnemy>();

        // Check if the object is an enemy by looking for an enemy script
        if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage
        {
            enemyScript.TakeDamage(Player.BoomerangExplosionDamage);
        }
    }
Beispiel #10
0
 void OnTriggerEnter2D(Collider2D other)//si elle entre en collision
 {
     if (!other.gameObject.CompareTag("Player"))
     {
         if (other.gameObject.CompareTag("Enemy") || other.gameObject.CompareTag("Boss"))
         {
             AEnemy _enemy = other.gameObject.GetComponent <AEnemy>(); //Recup les données AEnemy de l'ennemie touché
             _enemy.TakeDamage(arrowDmg);                              //Inflige des dégats a l'ennemie
         }
         Destroy(gameObject);                                          //Detruit l'arrow
     }
 }
Beispiel #11
0
    private void LaunchAttack(Collider2D hitbox, int damageAmount)
    {
        Collider2D[] allColliders = Physics2D.OverlapBoxAll(hitbox.bounds.center, hitbox.bounds.size, 0);

        foreach (Collider2D collider in allColliders)
        {
            AEnemy enemyScript = collider.gameObject.GetComponent <AEnemy>();
            // Check if the enemy script exists to confirm that this is an enemy's collider
            if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage
            {
                _player.slashParticle.Play();
                enemyScript.TakeDamage(damageAmount);
            }
        }
    }
Beispiel #12
0
        private void Awake()
        {
            _enemy = GetComponent <AEnemy>();

            _enemy.OnDie     += OnDie;
            RigidBody         = GetComponent <Rigidbody2D>();
            Player            = FindObjectOfType <APlayer>().transform;
            _distanceDetector = gameObject.AddComponent <DistanceDetector>();
            _distanceDetector.DetectionDistance = visionRange;
            _distanceDetector.targetTag         = "Player";

            StateMachine = new StateMachine();

            Mover = new Mover(spriteRenderer, RigidBody, Stats.Speed);
            SetUpStates();
        }
Beispiel #13
0
    void OnTriggerEnter2D(Collider2D other)
    {
        AEnemy enemy = other.GetComponent <AEnemy>();

        if (enemy)
        {
            if (enemy.transform.position.x >= 0)
            {
                enemy.SetColor(colorRight);
            }
            else
            {
                enemy.SetColor(colorLeft);
            }
        }
    }
Beispiel #14
0
    private void Ressurect()
    {
        if ((resTimer += Time.deltaTime) > resDuration)
        {
            GameObject obj = GameObject.Instantiate(zombiePrefab, transform.position, transform.rotation) as GameObject;
            obj.transform.parent = eSpawner.transform;
            AEnemy zombie = obj.GetComponent <AEnemy>();
            zombie.Init(hero, eSpawner.GetLevelSpeed(), 1.0f, null, colorValue);

            GameObject.Destroy(this.gameObject);
        }
        else
        {
            spriteRenderer.color -= step * Time.deltaTime;
            spriteRenderer.material.SetColor("_Color", spriteRenderer.color);
        }
    }
Beispiel #15
0
        private void FindTheNearestEnemies(AEnemy firstEnemy)
        {
            foreach (var enemy in allEnemies)
            {
                var tempEnemy    = enemy?.GetComponent <AEnemy>();
                var tempDistance = Vector3.Distance(enemy.transform.position, firstEnemy.transform.position); //Если эта операция будет сильно напрягать память, можно считать дистанцию вручную.

                if (radiusElectro >= tempDistance && !nearestEnemies.Contains(tempEnemy))
                {
                    nearestEnemies.Add(tempEnemy);
                }
                if (radiusElectro < tempDistance && nearestEnemies.Contains(tempEnemy))
                {
                    nearestEnemies.Remove(tempEnemy);
                }
            }
        }
Beispiel #16
0
        public List <AEnemy> GetEnemies()
        {
            List <AEnemy> enemies = new List <AEnemy>();

            foreach (EnemyObjectInfo eInfo in mapInfo.EnemyObjects)
            {
                AEnemy enemy = EnemyLoader.Create(eInfo.Type);
                enemy.LoadEnemy(eInfo.Destination, eInfo.Source);
                enemy.Load();
                enemies.Add(enemy);
            }
            //BlockEnemy enemy = new BlockEnemy();
            //enemy.Init();
            //enemy.Load();
            //enemies.Add(enemy);

            return(enemies);
        }
 /// <summary>
 /// Spawns Enemies in Room
 /// </summary>
 private void SpawnEnemies()
 {
     if (hasSpawnedEnemies)
     {
         return;
     }
     for (int i = 0; i < enemiesInRoom.Length; i++)
     {
         SpawnTemplate template = enemiesInRoom[i];
         GameObject    enemy    = Instantiate(template.EnemyPrefab);
         enemy.transform.SetParent(enemyHolder.transform);
         enemy.transform.localPosition = template.SpawnPosition;
         enemy.transform.rotation      = Quaternion.Euler(0, 0, template.SpawnRotation);
         AEnemy script = enemy.GetComponent <AEnemy>();
         enemies.Add(script);
         script.AddDeathListener(CheckRoomClear);
     }
     hasSpawnedEnemies = true;
 }
Beispiel #18
0
    private void SpawnEntity(Formation formation, ColorPicker color)
    {
        GameObject spawn = formation.GetEntity();

        Vector3 start = formation.transform.position;

        start.y = spawnHeight;

        if (color >= ColorPicker.LEFT && color <= ColorPicker.RIGHT)
        {
            switch (color)
            {
            case ColorPicker.LEFT:
                start.x = -3;
                break;

            case ColorPicker.MLEFT:
                start.x = -1;
                break;

            case ColorPicker.MRIGHT:
                start.x = 1;
                break;

            case ColorPicker.RIGHT:
                start.x = 3;
                break;
            }
        }

        GameObject obj = Instantiate(spawn, start, spawn.transform.rotation) as GameObject;

        obj.transform.parent = this.transform;
        AEnemy enemy = obj.GetComponent <AEnemy>();

        enemy.Init(hero, levels[level].speed, speedModifier, bonusManager.GetRandomBonus(), ColorPickerToColor(color));
    }
    private void createEnemy(AEnemy enemy)
    {
        bool spawned = false;
        int x = 0;// Random.Range(0, MapManager.rows-1);

        int counter = 0;

        while (spawned == false)
        {

            int y = Random.Range(0, MapManager.yRow - 1);

             Vector3 pos = new Vector2(x, y);

            if(Physics2D.OverlapCircleAll(pos, .4f).Length <1)
            {

                createEnemy(enemy, pos);

                spawned = true;
            }

            if (counter > MapManager.yRow)
            {
                spawned = true;
            }
            counter++;

        }
    }
Beispiel #20
0
 /* It's not in the main GameObject of the enemy because we will might use OnTriggerEnter/OnTriggerExit in Enemy for other purposes */
 private void Awake()
 {
     enemyController = GetComponentInParent <AEnemy>();
 }
 private void createEnemy(AEnemy enemy, Vector2 pos)
 {
     AEnemy instance = Instantiate(enemy, pos, Quaternion.identity) as AEnemy;
     instance.transform.SetParent(enemyHolder.transform);
     enemiesSpawned.Add(instance);
 }
Beispiel #22
0
    // ----- [ Getters / Setters ] --------------------------------------



    public void SetEnemy(AEnemy enemy)
    {
        _enemy = enemy;
        _enemy.OnDestruction += HandleEnemyOnDestruction;
    }
Beispiel #23
0
    // --v-- Private Functions --v--

    private void RemoveEnemy()
    {
        _enemy = null;
    }
Beispiel #24
0
    /*
    private methods
    */
    private bool changeTarget()
    {
        int bestTarget = -1; // means no target
        int bestScore = 1000;
        int myX = (int)transform.position.x;
        int myY = (int)transform.position.y;
        Vector2 myPosition = new Vector2(myX, myY);

        // if there is atleast 1 friend, then checking and returning index
        if (!(LevelManager.enemiesSpawned.Count < 1))
        {
            //print("trying to change target");
            // looking for best target
            for (int i = 0; i < LevelManager.enemiesSpawned.Count; i++)
            {

                AEnemy potentialTarget = LevelManager.enemiesSpawned[i];

                Vector2 potentialTargetPosition = new Vector2(
                                                                (int)potentialTarget.transform.position.x,
                                                                    (int)potentialTarget.transform.position.y);

                int score = MapCalc.GetMinCost(myPosition, potentialTargetPosition);

                if (score < bestScore)
                {
                    bestScore = score;
                    bestTarget = i;
                }
            }

            // better to add try catch, cause some of the enemies might try to swap into unexisting char
            try
            {
                _enemyTarget = LevelManager.enemiesSpawned[bestTarget];
            }
            catch (Exception e)
            {
                print("ERROR!" + e.StackTrace);
            }

            return true;
        }

        return false;
    }
Beispiel #25
0
 private void Awake()
 {
     enemy = GetComponentInParent <AEnemy>();
     timer = cooldownForNextAttack();
 }