public override void EnterState(AI _owner) { //Debug.Log("Entering Breed State"); _owner.animator.Play("Jump"); //play animation when entering state breeding = _owner.GetComponent <BreedingController>(); if (breeding) { breeding.mother = _owner.critter; breeding.father = _owner.seek.Mate.GetComponent <Critter>(); } time = Time.time; _owner.StartCoroutine(WaitForAnimation(_owner)); }
IEnumerator WaitForAnimation(AI _owner) { yield return(new WaitForSeconds(3)); breeding = _owner.GetComponent <BreedingController>(); if (breeding) { breeding.CreateOffspring(); breeding.BehavioursCrossover(); breeding.TraitsCrossover(); } _owner.seek.Target.GetComponent <Critter>().ResetBreed(); _owner.critter.ResetBreed(); if (_owner.critter.availableBehaviours.Contains(AI_Wander.instance)) { _owner.stateMachine.ChangeState(AI_Wander.instance); } if (_owner.critter.availableBehaviours.Contains(AI_Idle.instance)) { _owner.stateMachine.ChangeState(AI_Idle.instance); } }