Example #1
0
    void HandleEnemyBehavior()
    {
        switch (CurrentEnemyState)
        {
        case EnumEnemyStates.NEUTRAL:
            if (!SceneManager.IsPlayerDead)
            {
                InitializeAggress();
            }
            break;

        case EnumEnemyStates.AGGRESS:
            transform.LookAt(AggressTarget);
            //transform.Rotate(Vector3.up, 90f);  //an extra offset for enemies not facing the right direction
            transform.position = Vector3.MoveTowards(transform.position, AggressTarget.position, pursueRate);
            break;

        case EnumEnemyStates.ROAM:
            transform.LookAt(roamPosition);
            transform.position = Vector3.MoveTowards(transform.position, roamPosition, roamRate);

            if (!SceneManager.IsPlayerDead)
            {
                //pursue player
                InitializeAggress();
            }
            else
            {
                //Debug.Log("player dead, roam");
            }

            if (Vector3.Distance(transform.position, roamPosition) < 0.2f)
            {
                transform.position = roamPosition;

                //make a new waypoint
                roamPosition = new Vector3(Random.RandomRange(-roamRangeMin, roamRangeMax), 0, Random.Range(-roamRangeMin, roamRangeMax)) + transform.position;

                transform.LookAt(roamPosition);

                int rand = Random.Range(0, 2);

                if (rand == 0)
                {
                    CurrentEnemyState = EnumEnemyStates.NEUTRAL;
                }
                else
                {
                    CurrentEnemyState = EnumEnemyStates.ROAM;
                }
            }

            break;
        }
    }
Example #2
0
    private void InitializeAggress()
    {
        if (Time.time - aggressionTimer > aggressionTimerLimit)
        {
            //aggress player
            CurrentEnemyState = EnumEnemyStates.AGGRESS;

            int rand = Random.Range(0, 4);
            switch (rand)
            {
            case 0:
                if (SceneManager.IncrementSFX())
                {
                    audio.PlayOneShot(Clip_Aggress1, 1);
                }
                break;

            case 1:
                if (SceneManager.IncrementSFX())
                {
                    audio.PlayOneShot(Clip_Aggress2, 1);
                }
                break;

            case 2:
                if (SceneManager.IncrementSFX())
                {
                    audio.PlayOneShot(Clip_Aggress3, 1);
                }
                break;

            case 3:
                if (SceneManager.IncrementSFX())
                {
                    audio.PlayOneShot(Clip_Aggress4, 1);
                }
                break;

            case 4:
                if (SceneManager.IncrementSFX())
                {
                    audio.PlayOneShot(Clip_Aggress5, 1);
                }
                break;

            default:
                //no audio
                break;
            }
        }
    }
Example #3
0
    private void InitializeEnemy()
    {
        isInitialized = true;

        pursueRate = Random.Range(pursueRateMin, pursueRateMax);

        aggressionTimerLimit = Random.Range(aggressionTimerLimitMin, aggressionTimerLimitMax);
        aggressionTimer      = Time.time;

        deathTimeLimit = Random.Range(deathTimeLimitMin, deathTimeLimitMax);

        roamPosition = new Vector3(Random.RandomRange(-roamRangeMin, roamRangeMax), 0, Random.Range(-roamRangeMin, roamRangeMax)) + transform.position;

        int rand = Random.Range(0, 2);

        if (rand == 0)
        {
            CurrentEnemyState = EnumEnemyStates.NEUTRAL;
        }
        else
        {
            CurrentEnemyState = EnumEnemyStates.ROAM;
        }
    }
Example #4
0
    private void InitializeEnemy()
    {
        isInitialized = true;

        pursueRate = Random.Range(pursueRateMin, pursueRateMax);

        aggressionTimerLimit = Random.Range(aggressionTimerLimitMin, aggressionTimerLimitMax);
        aggressionTimer = Time.time;

        deathTimeLimit = Random.Range(deathTimeLimitMin, deathTimeLimitMax);

        roamPosition = new Vector3(Random.RandomRange(-roamRangeMin, roamRangeMax), 0, Random.Range(-roamRangeMin, roamRangeMax)) + transform.position;

        int rand = Random.Range(0, 2);

        if (rand == 0)
            CurrentEnemyState = EnumEnemyStates.NEUTRAL;
        else
            CurrentEnemyState = EnumEnemyStates.ROAM;
    }
Example #5
0
    private void InitializeAggress()
    {
        if (Time.time - aggressionTimer > aggressionTimerLimit)
        {
            //aggress player
            CurrentEnemyState = EnumEnemyStates.AGGRESS;

            int rand = Random.Range(0, 4);
            switch (rand)
            {
                case 0:
                    if (SceneManager.IncrementSFX())
                        audio.PlayOneShot(Clip_Aggress1, 1);
                    break;
                case 1:
                    if (SceneManager.IncrementSFX())
                        audio.PlayOneShot(Clip_Aggress2, 1);
                    break;
                case 2:
                    if (SceneManager.IncrementSFX())
                        audio.PlayOneShot(Clip_Aggress3, 1);
                    break;
                case 3:
                    if (SceneManager.IncrementSFX())
                        audio.PlayOneShot(Clip_Aggress4, 1);
                    break;
                case 4:
                    if (SceneManager.IncrementSFX())
                        audio.PlayOneShot(Clip_Aggress5, 1);
                    break;
                default:
                    //no audio
                    break;
            }
        }
    }
Example #6
0
    void HandleEnemyBehavior()
    {
        switch (CurrentEnemyState)
        {
            case EnumEnemyStates.NEUTRAL:
                if (!SceneManager.IsPlayerDead)
                    InitializeAggress();
                break;
            case EnumEnemyStates.AGGRESS:
                transform.LookAt(AggressTarget);
                //transform.Rotate(Vector3.up, 90f);  //an extra offset for enemies not facing the right direction
                transform.position = Vector3.MoveTowards(transform.position, AggressTarget.position, pursueRate);
                break;
            case EnumEnemyStates.ROAM:
                transform.LookAt(roamPosition);
                transform.position = Vector3.MoveTowards(transform.position, roamPosition, roamRate);

                if (!SceneManager.IsPlayerDead)
                {
                    //pursue player
                    InitializeAggress();
                }
                else
                {
                    //Debug.Log("player dead, roam");
                }

                if (Vector3.Distance(transform.position, roamPosition) < 0.2f)
                {
                    transform.position = roamPosition;

                    //make a new waypoint
                    roamPosition = new Vector3(Random.RandomRange(-roamRangeMin, roamRangeMax), 0, Random.Range(-roamRangeMin, roamRangeMax)) + transform.position;

                    transform.LookAt(roamPosition);

                    int rand = Random.Range(0, 2);

                    if (rand == 0)
                        CurrentEnemyState = EnumEnemyStates.NEUTRAL;
                    else
                        CurrentEnemyState = EnumEnemyStates.ROAM;
                }

                break;
        }
    }