Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Update () {
- foreach (Transform agentPosition in agentsTransform) {
- if (CanSeeAgent (agentPosition) && state != State.Arresting && !agentPosition.GetComponent<Agent> ().agentIsDown && !enemyDown) {
- agentVisibleTimer += Time.deltaTime;
- StopAllCoroutines ();
- state = State.Arresting;
- aiCharacterControl.SetTarget (agentPosition);
- StartCoroutine (AttackAgent (agentPosition));
- // StartCoroutine (SpawnProjectile (agentPosition)); // TODO switch to Coroutines
- } else if (state == State.Arresting && !enemyDown) {
- float distanceToAgent = Vector3.Distance (agentPosition.position, transform.position);
- if (distanceToAgent >= chaseRadius && state != State.Searching) {
- agentVisibleTimer -= Time.deltaTime;
- StopAllCoroutines ();
- // StopCoroutine (SpawnProjectile (agentPosition));
- // aiCharacterControl.SetTarget (transform);
- StartCoroutine (SearchForAgent ());
- }
- }
- agentVisibleTimer = Mathf.Clamp (agentVisibleTimer, 0, timeToSpotAgent);
- spotLight.color = Color.Lerp (originalSpotLightColour, Color.red, agentVisibleTimer / timeToSpotAgent);
- if (agentVisibleTimer >= timeToSpotAgent) {
- if (OnEnemyHasSpottedAgent != null) {
- OnEnemyHasSpottedAgent ();
- }
- }
- }
- }
- IEnumerator AttackAgent (Transform agentPoint) {
- animator.SetTrigger ("Shooting");
- yield return new WaitForSeconds (0.3f);
- agentPoint.GetComponent<Agent> ().TakeDamage ();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement