private IEnumerator WaitForPause() { yield return(new WaitForSeconds(pauseTime + Random.Range(0.0f, 0.9f))); _currentState = GroundWanderState.WANDERING; _pauseWait = null; }
private IEnumerator WaitForWander() { yield return(new WaitForSeconds(wanderTime)); _currentState = GroundWanderState.PAUSED; _wanderingWait = null; }
public void CollideWithGround() { if (_currentState == GroundWanderState.WANDERING) { _currentState = GroundWanderState.ROTATING; } }
private IEnumerator WaitForPause() { yield return(new WaitForSeconds(pauseTime + Random.Range(0.0f, 0.9f))); _currentState = GroundWanderState.WANDERING; transform.position = new Vector3(transform.position.x, _initY, transform.position.z); _pauseInitialized = false; _pauseWait = null; }
private void Update() { // update current state switch (_currentState) { case GroundWanderState.PAUSED: _rigidbody.velocity = Vector3.zero; break; case GroundWanderState.ROTATING: _rigidbody.velocity = Vector3.zero; transform.rotation *= Quaternion.Euler(0f, Random.Range(160f, 200f), 0f); break; case GroundWanderState.WANDERING: _rigidbody.velocity = transform.forward * wanderSpeed; break; } // check if need to transition to other states switch (_currentState) { case GroundWanderState.PAUSED: if (_pauseWait == null) { _pauseWait = StartCoroutine(WaitForPause()); } break; case GroundWanderState.ROTATING: _currentState = GroundWanderState.WANDERING; break; case GroundWanderState.WANDERING: if (_wanderingWait == null) { _wanderingWait = StartCoroutine(WaitForWander()); } break; } }