// Update is called once per frame void Update() { if (stunTimer > 0) { stunTimer -= Time.deltaTime; } if (!isActive || destroyed) // Do nothing if currently occupied by ai { return; } UpdateVisuals(); if (sight.IsObjectInView(GameManager.gameManager.Robot.gameObject) || Vector3.Distance(transform.position, GameManager.gameManager.Robot.transform.position) < bumpRange) { reaction.OnIntruderInSight(); //Try to turn to face the player orientation = (int)Mathf.Sign(GameManager.gameManager.Robot.transform.position.x - transform.position.x); Vector3 gunPos = gunPosition.transform.localPosition; if (orientation == 1) { gunPos.x = 2.604553f; } else { gunPos.x = -2.604553f; } gunPosition.transform.localPosition = gunPos; } else { reaction.OnIntruderOutOfSight(); } alertness = reaction.DetermineAlertness(); if (stunTimer > 0) { alertness = Alertness.Normal; } if (alertness == Alertness.Aggressive) { if (stunTimer <= 0) { reactionMethod.OnAggressive(); } if (previousAlertness != Alertness.Aggressive) { if (alertSound != null) { AudioSource.PlayClipAtPoint(alertSound, transform.position); } animations.Play(animations.Library.GetClipByName("Shoot")); } activateConnectedGadgets(); previousAlertness = Alertness.Aggressive; //Return so we don't move return; } else if (alertness == Alertness.Suspicious) { reactionMethod.OnSuspicious(); if (previousAlertness != Alertness.Suspicious) { if (suspiciousSound != null && previousAlertness != Alertness.Aggressive) { AudioSource.PlayClipAtPoint(suspiciousSound, transform.position); } animations.Play(animations.Library.GetClipByName("Attack")); } previousAlertness = Alertness.Suspicious; //Don't move if intruder is still in sight if (sight.IsObjectInView(GameManager.gameManager.Robot.gameObject) || Vector3.Distance(transform.position, GameManager.gameManager.Robot.transform.position) < bumpRange) { return; } } else if (alertness == Alertness.Normal) { reactionMethod.OnNormal(); previousAlertness = Alertness.Normal; } if (stunTimer <= 0) { movement.UpdateMovement(); orientation = (int)Mathf.Sign(movement.Velocity.x); stunSparks.enableEmission = false; } Vector3 gunPosi = gunPosition.transform.localPosition; if (orientation == 1) { gunPosi.x = 2.604553f; } else { gunPosi.x = -2.604553f; } gunPosition.transform.localPosition = gunPosi; }