Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        CommonEnemy norm = gameObject.GetComponent <CommonEnemy>();

        Vector3 Angle = (norm.player.position - gameObject.transform.position).normalized;

        if (fireTime > 0)
        {
            fireTime -= Time.deltaTime;
        }//Recharge firing

        if (norm.difference <= range & fireTime <= 0)
        {
            Instantiate(projectile, gameObject.transform.position, Quaternion.Euler(0, 0, PublicFunctions.FindAngle(Angle.x, Angle.y)));

            fireTime += 1;
        }//Fire if player is in range and if firing is ready

        if (norm.difference > 50)
        {
            transform.Translate(new Vector3(0, 0, 0));
        }
        else
        {
            if (norm.difference > range * 0.7)
            {
                transform.Translate(norm.direction * Time.deltaTime * norm.speed);
            }
            else if (norm.difference < range * 0.7)
            {
                transform.Translate(-norm.direction * Time.deltaTime * norm.speed);
            }
        }//Move to player if it's at a certain range. Back up if player's too close
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        CommonEnemy norm = gameObject.GetComponent <CommonEnemy>();

        if (norm.difference > 50)
        {
            transform.Translate(new Vector3(0, 0, 0));
        }
        else
        {
            transform.Translate(norm.direction * Time.deltaTime * norm.speed);
        }
    }
Exemplo n.º 3
0
    }//Finds the angle between two objects

    public static void DamageEnemy(Collision2D hit, int damage)
    {
        if (hit.gameObject.CompareTag("Enemy"))
        {
            CommonEnemy c = hit.gameObject.GetComponent <CommonEnemy>();
            c.EnemyDamage(damage);
        }
        if (hit.gameObject.CompareTag("EnemyShield"))
        {
            EnemyShield s = hit.gameObject.GetComponent <EnemyShield>();
            s.EnemyDamage(damage);
        }
    }//Damages an enemy or enemyshield
Exemplo n.º 4
0
    // Update is called once per frame
    void Update()
    {
        CommonEnemy norm = gameObject.GetComponent <CommonEnemy>();

        norm.isProtector = true;

        Vector3 against = norm.player.position;

        GameObject[] partners = GameObject.FindGameObjectsWithTag("Enemy");

        if (norm.difference < 100)
        {
            Vector3 partner = getShortest(partners, 50).transform.position;

            Vector3 destination = guardPosition(against, partner, 12);

            Vector3 direction = destination - gameObject.transform.position;

            gameObject.transform.Translate(direction * Time.deltaTime * norm.speed);
        }
    }
Exemplo n.º 5
0
        private void LookForPlayer(CommonEnemy enemy)
        {
            Collider[] targets = Physics.OverlapSphere(enemy.EnemyView.transform.position, _enemyData._radiusOfView, _playerLayer);

            for (int i = 0; i < targets.Length; i++)
            {
                Transform target      = targets[i].transform;
                Vector3   dirToTarget = (target.position - enemy.EnemyView.transform.position).normalized;
                Debug.DrawRay(target.position, enemy.EnemyView.transform.position - target.position, Color.red);
                if (Vector3.Angle(enemy.EnemyView.transform.forward, dirToTarget) < _enemyData._viewAngle / 2)
                {
                    float distanceToTarget = Vector3.Distance(enemy.EnemyView.transform.position, target.position);
                    if (!Physics.Raycast(enemy.EnemyView.transform.position, dirToTarget, distanceToTarget, _obstacleLayer))
                    {
                        _seeingPlayer = true;
                        Attack(target, enemy);
                    }
                    else
                    {
                        _seeingPlayer = false;
                    }
                }
            }
        }
Exemplo n.º 6
0
        private void InitializeEnemies()
        {
            var enemyFabric = new EnemyFabric(_enemyData);

            _enemies = new List <CommonEnemy>();
            var spawnPoints = _spawnPointController.Data.EnemySpawnPoints;

            foreach (var spawnPoint in spawnPoints)
            {
                var enemy = enemyFabric.Instantiate(spawnPoint.Type, spawnPoint.transform.position,
                                                    Quaternion.identity);

                if (enemy == null)
                {
                    continue;
                }

                var commonEnemy = new CommonEnemy();
                commonEnemy.EnemyView    = enemy;
                commonEnemy.Gun          = new CommonGun(enemy.transform.Find("Gun").transform.Find("BulletSpawner"), _enemyData._amountOfAmmo, _enemyData._rateOfFire);
                commonEnemy.NavMeshAgent = enemy.GetComponent <NavMeshAgent>();
                _enemies.Add(commonEnemy);
            }
        }
Exemplo n.º 7
0
 private void Attack(Transform player, CommonEnemy enemy)
 {
     enemy.EnemyView.transform.LookAt(player);
     enemy.NavMeshAgent.SetDestination(player.position);
     enemy.Gun.Shoot();
 }