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; } }
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; } } }
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; } }
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; }
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; } } }
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; } }