private IEnumerator StateTimer(PeasantSate newState, float minTime, float maxTime) { yield return(new WaitForSeconds(Random.Range(3, 7))); ChangeState(newState); }
private void ChangeState(PeasantSate newState) { if (newState == state) { return; } state = newState; StopAllCoroutines(); switch (newState) { case PeasantSate.IDLE: { animator.SetFloat("Speed", 0); StartCoroutine(StateTimer(PeasantSate.WALKING, 3, 7)); break; } case PeasantSate.WALKING: { Debug.Log("Walk"); transform.rotation = Quaternion.Euler(0, Random.Range(0, 360), 0); animator.SetFloat("Speed", speed); StartCoroutine(StateTimer(PeasantSate.IDLE, 3, 7)); break; } case PeasantSate.RUNNING: { animator.SetFloat("Speed", runSpeed); break; } case PeasantSate.ENGAGED: { animator.SetTrigger("Engage"); engaged = true; animator.SetFloat("Speed", speed); break; } case PeasantSate.ATTACKING: { Debug.Log("Attack"); animator.SetTrigger("Attack"); animator.SetFloat("Speed", 0); StartCoroutine(StateTimer(PeasantSate.ENGAGED, 2f, 2f)); break; } case PeasantSate.HURT: { animator.SetFloat("Speed", 0); animator.SetTrigger("Hurt"); break; } case PeasantSate.DEAD: { animator.SetFloat("Speed", 0); GetComponent <DropObjects>().Drop(); Destroy(gameObject); break; } } }