Esempio n. 1
0
    private void Update()
    {
        GameObject go = AIUtilities.GetNearestGameObject(gameObject, "Monster", Range, xray: true);

        target = go;
        if (target != null && Placed)
        {
            if (projectile.GetComponent <TowerProjectile>())
            {
                projectile.GetComponent <TowerProjectile>().target = target;
            }
            else if (projectile.GetComponent <TowerRapidProjectile>())
            {
                projectile.GetComponent <TowerRapidProjectile>().target = target;
            }
            //Debug.Log(target.name);
            AimBarrel(target);
            Fire(target);
            //Debug.Log((target.transform.position - rangeFinder.transform.position).magnitude);
            if (!CheckEnemyRange(target))
            {
                target = null;
            }
        }
    }
    private void Update()
    {
        if (Placed)
        {
            GameObject enemy = AIUtilities.GetNearestGameObject(VisionCheck, EnemyTag, Range);

            if (enemy != null)
            {
                Barrel.transform.LookAt(enemy.transform.position + Vector3.up);
                if (WaitTime <= 0)
                {
                    GameObject shot       = Instantiate(Projectile, Barrel.transform.position + Barrel.transform.forward, Barrel.transform.rotation);
                    Projectile projectile = shot.GetComponent <Projectile>();
                    projectile.WeaponDamage = Damage;
                    projectile.EnemyTag     = EnemyTag;
                    Rigidbody rb = shot.GetComponent <Rigidbody>();
                    rb.AddForce(Barrel.transform.forward * (ShotSpeed * 10));
                    rb.useGravity = false;
                    WaitTime      = Rate;
                }
                else
                {
                    WaitTime -= Time.deltaTime;
                }
            }
        }
    }
 private void Update()
 {
     if (attack != null)
     {
         GameObject target = AIUtilities.GetNearestGameObject(spawner.gameObject, attack.Target, xray: true);
         if (target != null)
         {
             spawner.gameObject.transform.LookAt(target.transform);
         }
     }
 }
    private void Update()
    {
        GameObject go = AIUtilities.GetNearestGameObject(gameObject, attack.Target, 0, attack.Nc.Fov, attack.Nc.SeeThroughWalls);

        if (go != null && !hit)
        {
            hit = true;
            Damagable health = go.GetComponent <Damagable>();
            if (health != null)
            {
                health.ApplyDamage(Damage);
            }
            if (DestroyOnHit)
            {
                Destroy(gameObject);
            }
        }
    }
 void Update()
 {
     if (ResetTime <= 0)
     {
         GameObject enemy = AIUtilities.GetNearestGameObject(gameObject, EnemyTag, TriggerRange, xray: true);
         if (enemy != null)
         {
             ResetTime = Rate;
             Particles.Play();
             GameObject[] monsters = AIUtilities.GetGameObjects(gameObject, EnemyTag, Range);
             monsters.ToList().ForEach(m => m.GetComponent <Damagable>().ApplyDamage(Damage));
         }
     }
     else
     {
         ResetTime -= Time.deltaTime;
     }
 }
Esempio n. 6
0
    void Update()
    {
        if (m_navAgent.isOnNavMesh)
        {
            var player = AIUtilities.GetNearestGameObject(gameObject, target, range, fov, SeeThroughWalls);
            //Debug.Log($"Player: {player}");
            if (player != null)
            {
                Attacking = ((transform.position - player.transform.position).magnitude <= attackRange && AttackTime <= 0);
                //Debug.Log($"Attacking: {Attacking}");
                if (Attacking)
                {
                    transform.LookAt(player.transform);
                    if (animator != null)
                    {
                        animator.SetTrigger("Attack");
                    }
                    AttackTime = attackCD; m_navAgent.isStopped = true;
                }
                else if ((transform.position - player.transform.position).magnitude <= attackRange)
                {
                    m_navAgent.isStopped = true;
                }
                else
                {
                    m_navAgent.SetDestination(player.transform.position); m_navAgent.isStopped = false;
                }
            }
            else if (MoveTime <= 0)
            {
                if (m_navAgent.isStopped && m_navAgent != null && m_navAgent.isOnNavMesh)
                {
                    m_navAgent.isStopped = false;
                }
                //Debug.Log("Moving");
                if (animator != null)
                {
                    animator.SetTrigger("StopAttack");
                }
                MoveTime = MoveCd;
                Vector3 target = Vector3.up;
                if (m_x && m_z)
                {
                    target = new Vector3(gameObject.transform.position.x + Random.Range(-searchDistance, searchDistance + 1), 0, gameObject.transform.position.z + Random.Range(-searchDistance, searchDistance + 1));
                }
                else if (!m_x && m_z)
                {
                    target = new Vector3(transform.position.x, 0, gameObject.transform.position.z + Random.Range(-searchDistance, searchDistance + 1));
                }
                else if (m_x && !m_z)
                {
                    target = new Vector3(gameObject.transform.position.x + Random.Range(-searchDistance, searchDistance + 1), 0, transform.position.z);
                }

                if (target != null && m_navAgent != null && m_navAgent.isOnNavMesh)
                {
                    m_navAgent.SetDestination(target);
                    if (m_weapon != null && !m_weapon.gameObject.activeSelf)
                    {
                        m_weapon.SetActive(true);
                    }
                }
            }

            if (MoveTime > 0 && m_navAgent.destination == transform.position)
            {
                MoveTime -= Time.deltaTime;
            }
            if (AttackTime > 0)
            {
                AttackTime -= Time.deltaTime;
            }

            if (animator != null)
            {
                animator.SetFloat("Speed", m_navAgent.velocity.magnitude);
            }
        }
    }