// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { wall_requester.SetWallSolved(ele_wall); eleva = animator.GetBehaviour <ElevatorState>().GetElevator(); //Debug.Log("elevator in door state = " + eleva.name); List <GameObject> solvedlist = wall_requester.GetSolvedList(); Debug.Log("is ele wall solved =" + solvedlist.Contains(ele_wall)); elevatorInitiated = true; robotic_wall.wallToTarget_controller.Robot_Move_Switch(true); robotic_wall.wallToTarget_controller.Set_Target(eleva.transform.GetChild(0).gameObject); //since wall is over to move to target, this elevator door is initiated if (robotic_wall.wallToTarget_controller.Get_State()) { animator.SetBool("ElevatorDoorInitiated", true); } foreach (Animator states in statesList) { elevatorInitiated = elevatorInitiated & states.GetBool("ElevatorDoorInitiated"); } if (elevatorInitiated) { timer = timer + 1; } if (timer > 200) { animator.SetBool("ElevatorInitiated", elevatorInitiated); timer = 0; } }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { /*if (Judge_Direction(slider)) * slider.transform.position = new Vector3(user.transform.position.x, slider.transform.position.y, slider.transform.position.z); * else * slider.transform.position = new Vector3(slider.transform.position.x, slider.transform.position.y, user.transform.position.z);*/ Debug.Log("doorwall =" + doorWall.name); //ensure this robotic wall is in solved list wall_requester.SetWallSolved(doorWall); //disable obstacle avoidance module animator.gameObject.GetComponent <Obstacle_Avoid>().enabled = false; roboticWall.wallToTarget_controller.Robot_Move_Switch(true); roboticWall.wallToTarget_controller.Set_Target(frame); if (roboticWall.wallToTarget_controller.Get_State()) { animator.SetBool("DoorInitiated", true); } Debug.Log("door =" + frame.transform.GetChild(0).gameObject.name); //if the slider of door wall inactivated, transform into standby state if (!doorWall.transform.GetChild(0).gameObject.activeSelf) { animator.SetBool("SliderEnterDoor", false); } //send the paramenter to next state animator.GetBehaviour <DoorState>().SetDoor(frame.transform.GetChild(0).gameObject); //animator.GetBehaviour<DoorState>().SetSlider(slider); }
private GameObject doorWall;//the door where the wall settle // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { roboticWall.Set_Robotic_Wall(animator.gameObject); wall_requester = GameObject.Find("User_Encounter_Area").GetComponent <Wall_Requester>(); //user = GameObject.Find("Camera (eye)").gameObject; //roboticWall.wallToTarget_controller.Robot_Move_Switch(true); //doorWall = GameObject.Find("DoorWall"); Debug.Log("doorwall =" + doorWall.name); wall_requester.SetWallSolved(doorWall); }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { fsmController = GameObject.Find("StatesController").GetComponent <FSMSystem>(); //if it's from door state, keep the target wall same, else get target wall by controller //if (!animator.GetBool("SliderEnterDoor")) targetWall = fsmController.SendToWallState(); roboticWall.Set_Robotic_Wall(animator.gameObject); slider = targetWall.transform.GetChild(0).gameObject; user = GameObject.Find("Camera (eye)").gameObject; wall_requester = GameObject.Find("User_Encounter_Area").GetComponent <Wall_Requester>(); wall_requester.SetWallSolved(targetWall); }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { robotic_wall.Set_Robotic_Wall(animator.gameObject); statesController = GameObject.Find("StatesController").GetComponent <FSMSystem>(); statesList = statesController.GetStatesList(); wall_requester = GameObject.Find("User_Encounter_Area").GetComponent <Wall_Requester>(); //put the wall which the elevator setteled in to sloved List ele_wall = GameObject.Find("Wall_Elevator_True"); eleva = animator.GetBehaviour <ElevatorState>().GetElevator(); ele_requester = eleva.GetComponent <Elevator_Requester>(); Debug.Log("eleva =" + ele_wall.name); wall_requester.SetWallSolved(ele_wall); ele_requester.AllocateElevator(animator); }
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { roboticWall.wallToTarget_controller.Robot_Move_Switch(false); //if next state is door state, keep the target wall in sloved list, else release the target wall Debug.Log("slider enter ele =" + animator.GetBool("SlideEnterElevator")); if (!animator.GetBool("SliderEnterDoor") && !animator.GetBool("SlideEnterElevator")) { wall_requester.ReleaseWall(targetWall); } else { Debug.Log("dont release" + targetWall.name); wall_requester.SetWallSolved(targetWall); } //reset p1 and obstacle avoidance module roboticWall.wallToTarget_controller.SetP1(40); animator.gameObject.GetComponent <Obstacle_Avoid>().enabled = true; }