Exemple #1
0
    void Update()
    {
        float distance = Vector3.Distance(target.position, transform.position);

        if (!isHostile)
        {
            if (distance < seenDistance)
            {
                Ray        ray = new Ray(transform.position, target.position);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    GameObject[] allies = GameObject.FindGameObjectsWithTag("Enemy");
                    foreach (GameObject ally in allies)
                    {
                        if (Vector3.Distance(transform.position, ally.transform.position) <= helpDistance)
                        {
                            _iaSoldiers = ally.GetComponent <IASoldiers>();
                            _iaSoldiers.RequestHelp();
                        }
                    }
                }
            }
        }
        else if (!locked || (!animator.GetCurrentAnimatorStateInfo(0).IsName("Reload") && !animator.GetCurrentAnimatorStateInfo(0).IsName("Shoot")))
        {
            if (activatesAlarm && alarm != null && !alarm.GetComponent <AudioSource>().isPlaying)
            {
                agent.SetDestination(alarm.transform.position);
                if (Vector3.Distance(transform.position, alarm.transform.position) <= 3f)
                {
                    alarm.GetComponent <Alarm>().ActivateAlarm();
                    activatesAlarm = false;
                }
            }
            else if (distance >= shootDistance)
            {
                agent.SetDestination(target.position);
                animator.SetBool("Shooting", false);
            }
            else
            {
                agent.SetDestination(transform.position);
                animator.SetInteger("Bullets", consecutiveShoots - currentShoots);
                if (currentShoots == consecutiveShoots)
                {
                    animator.SetBool("Shooting", false);
                    locked   = true;
                    canShoot = true;
                }
                else if (canShoot)
                {
                    canShoot = false;
                    animator.SetBool("Shooting", true);
                    transform.LookAt(target.transform, Vector3.up);
                }
            }
            animator.SetBool("Moving", rb.velocity.magnitude > 0f);
        }
    }
Exemple #2
0
    void Update()
    {
        if (Time.timeScale > 0 && animator.GetCurrentAnimatorStateInfo(0).IsName("Idle"))
        {
            if (!Input.GetKey(KeyCode.Mouse1) && _move.speed != normalSpeed)
            {
                _scopeActive.Active(false);
                _move.ModifySpeed(speedDifference);
            }

            if (Input.GetKeyDown(KeyCode.Mouse1))
            {
                _scopeActive.Active(true);
                _move.ModifySpeed(-speedDifference);
            }

            if (Input.GetKeyDown(KeyCode.Mouse0) && animator.GetCurrentAnimatorStateInfo(0).IsName("Idle") && magazineBulletCount > 0)
            {
                animator.SetBool("Shoot", true);
                animator.SetInteger("Bullets", magazineBulletCount);

                Ray        ray = new Ray(camera.transform.position, camera.transform.forward);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    if (hit.collider.gameObject.tag == "Enemy")
                    {
                        IASoldiers _iaSoldier = hit.collider.gameObject.GetComponent <IASoldiers>();
                        _iaSoldier.HitAndDecreaseHP(weaponDamage);
                    }
                    else if (hit.collider.gameObject.tag == "Alarm")
                    {
                        Alarm _alarm = hit.collider.gameObject.GetComponent <Alarm>();
                        _alarm.HitAndDecreaseHP(weaponDamage);
                    }
                }
            }

            else if ((Input.GetKeyDown(KeyCode.R) || (magazineBulletCount == 0 && totalBulletCount != 0)) && magazineBulletCount < magazineSize)
            {
                if (totalBulletCount > 0)
                {
                    _scopeActive.Active(false);
                    animator.SetInteger("Bullets", 0);
                }

                else if (!source.isPlaying)
                {
                    source.PlayOneShot(reloadWeapon, volume);
                }
            }
        }
    }
Exemple #3
0
 public void ActivateAlarm()
 {
     source.Play();
     GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
     foreach (GameObject enemy in enemies)
     {
         if (Vector3.Distance(transform.position, enemy.transform.position) <= helpDistance)
         {
             _iaSoldiers = enemy.GetComponent <IASoldiers> ();
             _iaSoldiers.RequestHelp();
         }
     }
     _mision.UpdateProgress(0, true);
 }