示例#1
0
    // 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;
        }
    }
示例#2
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);
    }
示例#3
0
 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);
 }
示例#4
0
 // 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);
 }
示例#5
0
 // 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);
 }
示例#6
0
    // 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;
    }