// State Coroutines private IEnumerator setStateSearching() { beam.SetActive(false); state = ALIEN_STATE.SEARCHING; GameObject[] objs = GameObject.FindGameObjectsWithTag("Animal"); if (objs.Length == 0) { Destroy(this.gameObject); } else { animal = objs [Random.Range(0, objs.Length)]; } yield return(new WaitForSeconds(searchTimeInterval)); if (state == ALIEN_STATE.SEARCHING && animal != null) { StartCoroutine(setStateMoving()); } else { StartCoroutine(setStateSearching()); } yield break; }
private IEnumerator setStateMoving() { beam.SetActive(false); state = ALIEN_STATE.MOVING; while (true) { if (state == ALIEN_STATE.MOVING) { if (animal != null) { setVelocityTowardsAnimal(); } else { StartCoroutine(setStateSearching()); break; } } yield return(new WaitForSeconds(moveTimeInterval)); } yield break; }
private IEnumerator setStateStunned(float time) { beam.SetActive(false); state = ALIEN_STATE.STUNNED; this.rigidbody.velocity = Vector3.zero; yield return(new WaitForSeconds(time)); StartCoroutine(setStateSearching()); yield break; }
private IEnumerator setStateCapturing() { state = ALIEN_STATE.CAPTURING; this.rigidbody.velocity = Vector3.zero; beam.SetActive(true); yield return(new WaitForSeconds(captureTimeInterval)); if (state == ALIEN_STATE.CAPTURING) { StartCoroutine(setStateSearching()); } yield break; }