void OnTriggerEnter(Collider collider) { if (collider.gameObject.tag == "FireZone") { //print("in fire zone"); boyNeedState = BoyNeedState.RunToSurviveFire; } }
void FindFood() { if (!dieded) { MovingBoy.anim.Play("ArmsFeed"); MovingBoy.BoyState = BoyState.FindingFood; boyNeedState = BoyNeedState.NeedFood; } }
IEnumerator SetOnFireDispatch() { Fire.SetActive(true); yield return(new WaitForSeconds(5f)); Fire.SetActive(false); MovingBoy.BoyState = BoyState.Idle; boyNeedState = BoyNeedState.EnoughtOfEverything; fireActivation = false; }
IEnumerator DebugCheckRestart() { MovingBoy.BoyState = BoyState.Idle; boyNeedState = BoyNeedState.EnoughtOfEverything; yield return(new WaitForSeconds(10f)); //stop fire too Fire.SetActive(false); MovingBoy.BoyState = BoyState.Idle; boyNeedState = BoyNeedState.EnoughtOfEverything; fireActivation = false; StartCoroutine(DebugCheckRestart()); }
void GetWood() { if (!dieded) { if (WoodAmount < AmountOfWoodCarriedMax) { WoodAmount++; } else { boyNeedState = BoyNeedState.EnoughtOfEverything; MovingBoy.BoyState = BoyState.Idle; } if (WoodAmount >= AmountOfWoodCarriedMax) { WoodAmount = AmountOfWoodCarriedMax; } } }
void GiveWood() { if (!dieded) { if (WoodAmount > 0) { WoodAmount--; NeirbyHouse.GetComponent <House>().AddWoodToBuilding(1); } else { boyNeedState = BoyNeedState.EnoughtOfEverything; MovingBoy.BoyState = BoyState.Idle; } if (WoodAmount <= 0) { WoodAmount = 0; } } }
void Eat() { if (!dieded) { if (food < foodEatedEnoughState) { food += foodFeedingSpeed; NeirbyBush.GetComponent <BushLife>().ReduceLife(foodFeedingSpeed); //MovingBoy.anim.Play("ArmsEating"); } else { boyNeedState = BoyNeedState.EnoughtOfEverything; MovingBoy.BoyState = BoyState.Idle; MovingBoy.anim.Play("Idle"); } if (food >= MaxFood) { food = MaxFood; } } }
IEnumerator waitToDie() { VisualWood(); yield return(new WaitForSeconds(0.1f)); DebugLookAroundBoys(); if (!dieded) { food -= foodLoss; switch (boyNeedState) { case BoyNeedState.EnoughtOfEverything: if (food < FoodBoySated && !fireActivation) { FindFood(); } //build a house //find nearest wood, if not null //get wood //when enough wood, //go to house and deposit //loop if if (GameObject.Find("GameController").GetComponent <Usables>().House.Count == 0) { MovingBoy.BoyState = BoyState.Idle; yield return(0); break; } else { if (WoodAmount < AmountOfWoodCarriedMax) { MovingBoy.destinationToObjectif = NeirbyTree; MovingBoy.BoyState = BoyState.WalkingToObjectif; MovingBoy.typeOfUsableImLookingFor = UsableType.Tree; if (NeirbyTree == null || MovingBoy.destinationToObjectif == null) { boyNeedState = BoyNeedState.EnoughtOfEverything; } else { if (Vector3.Distance(MovingBoy.destinationToObjectif.transform.position, this.transform.position) <= 5f) { GetWood(); } } break; } if (WoodAmount >= AmountOfWoodCarriedMax) { MovingBoy.destinationToObjectif = NeirbyHouse; MovingBoy.BoyState = BoyState.WalkingToObjectif; MovingBoy.typeOfUsableImLookingFor = UsableType.House; if (NeirbyHouse == null || MovingBoy.destinationToObjectif == null) { boyNeedState = BoyNeedState.EnoughtOfEverything; } else { if (Vector3.Distance(MovingBoy.destinationToObjectif.transform.position, this.transform.position) <= 5f) { GiveWood(); } } break; } } break; case BoyNeedState.NeedFood: //eat if available bush around him //then when enought go back to idle and wondering around MovingBoy.typeOfUsableImLookingFor = UsableType.Bush; MovingBoy.destinationToObjectif = NeirbyBush; MovingBoy.BoyState = BoyState.WalkingToObjectif; if (NeirbyBush == null || MovingBoy.destinationToObjectif == null) { boyNeedState = BoyNeedState.EnoughtOfEverything; } else { if (Vector3.Distance(MovingBoy.destinationToObjectif.transform.position, this.transform.position) <= 2f) { Eat(); } } break; case BoyNeedState.RunToSurviveFire: MovingBoy.BoyState = BoyState.RunAway; food = 20; if (!fireActivation) { fireActivation = true; StartCoroutine(SetOnFireDispatch()); } break; } } if (food <= 0) { Die(); food = 0; } yield return(new WaitForSeconds(0.5f)); StartCoroutine(waitToDie()); }