Exemplo n.º 1
0
    private IEnumerator WaitForPause()
    {
        yield return(new WaitForSeconds(pauseTime + Random.Range(0.0f, 0.9f)));

        _currentState = GroundWanderState.WANDERING;
        _pauseWait    = null;
    }
Exemplo n.º 2
0
    private IEnumerator WaitForWander()
    {
        yield return(new WaitForSeconds(wanderTime));

        _currentState  = GroundWanderState.PAUSED;
        _wanderingWait = null;
    }
Exemplo n.º 3
0
 public void CollideWithGround()
 {
     if (_currentState == GroundWanderState.WANDERING)
     {
         _currentState = GroundWanderState.ROTATING;
     }
 }
Exemplo n.º 4
0
    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;
    }
Exemplo n.º 5
0
    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;
        }
    }