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); } }
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); } } } }
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); }