// Wait State private void Wait() { if (TimeLeft()) { m_State = StatesWolf.Idle; } }
// Decides the next state. private void DecideMovement() { float percentageToWait = Random.Range(0.0f, 100.0f); if (percentageToWait < m_PercentageToWait) { m_State = StatesWolf.Wait; } else { if (m_Wolf.Health < m_MinHealthToRun) { float percentageToRun = Random.Range(0.0f, 100.0f); if (percentageToRun < m_PercentageToRunAway && GameManager.m_Instance.PigList.Count > 0) { m_State = StatesWolf.AttackPig; ObjectiveDir = GenerateDirection(GameManager.m_Instance.PigList[Random.Range(0, GameManager.m_Instance.PigList.Count)]); } else { m_State = StatesWolf.RunAway; ObjectiveDir = GenerateDirection(GameManager.m_Instance.Chicken) * -1.0f; } } else { m_State = StatesWolf.AttackChicken; ObjectiveDir = GenerateDirection(GameManager.m_Instance.Chicken); } IsMovingNormal = true; } }
protected override void Start() { base.Start(); LastPosition = transform.position; m_State = StatesWolf.Idle; m_TimeLeft = m_Time; }
// Attack chicken state. private void AttackChicken() { if (!IsMovingNormal) { m_State = StatesWolf.Idle; } else { Movement(); } }
// Run away state. private void RunAway() { if (!IsMovingNormal) { m_State = StatesWolf.Idle; } else { Movement(); } }