コード例 #1
0
    // 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;
    }
コード例 #2
0
    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;
    }
コード例 #3
0
    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;
    }
コード例 #4
0
    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;
    }