Ejemplo n.º 1
0
    void Start()
    {
        Transform       control     = GameObject.Find("PlayerRobot").transform;
        MultiContolBase playerRobot = new MultiContolBase(player.transform, control.Find("Pos"));

        player.SetTargetControl(control, playerRobot);
        playerRobot.Init();
        playerRobot.SetCameraHands(player.HUDCamera, player.rightHand, player.leftHand);
        multiControlsDic.Add(control.name, playerRobot);

        control = GameObject.Find("SpiralElevator").transform;
        SpiralElevatorControl spiralElevatorControl = new SpiralElevatorControl(control, control.Find("Pos"));

        spiralElevatorControl.Init();
        spiralElevatorControl.SetCameraHands(player.HUDCamera, player.leftHand, player.rightHand);
        multiControlsDic.Add(control.name, spiralElevatorControl);

        control = GameObject.Find("RoboArm").transform;
        RoboArmControl roboArmControl = new RoboArmControl(control, control.Find("Pos"));

        roboArmControl.Init();
        roboArmControl.SetCameraHands(player.HUDCamera, player.leftHand, player.rightHand);
        roboArmControl.GiveInputAction(player.SqueezeAction);
        multiControlsDic.Add(control.name, roboArmControl);

        control = GameObject.Find("Drone").transform;
        DroneControl droneControl = new DroneControl(control, control.Find("Pos"));

        droneControl.Init();
        droneControl.SetCameraHands(player.HUDCamera, player.leftHand, player.rightHand);
        droneControl.GiveInputAction(player.SqueezeAction);
        multiControlsDic.Add(control.name, droneControl);
    }
Ejemplo n.º 2
0
 public void SetTargetControl(Transform player, MultiContolBase control)
 {
     playerRobot = new PlayerRobot();
     playerRobot.SetCameraHands(HUDCamera, rightHand, leftHand);
     playerRobot.Init(player);
     targetControl = control;
     //player.gameObject.SetActive(false);
 }
Ejemplo n.º 3
0
    void TransDetect()
    {
        if (!isTransTouchDown)
        {
            if (transAction.GetStateDown(SteamVR_Input_Sources.LeftHand))
            {
                transHand               = SteamVR_Input_Sources.LeftHand;
                isTransTouchDown        = true;
                curTransHand            = leftHand;
                transLineRender.enabled = true;

                RaycastHit hit;
                Physics.Raycast(curTransHand.position, curTransHand.forward, out hit, transDist, transMask);

                //if (hit.transform != null)
                //{
                //    //if (addLineObject == null)
                //    //{
                //    //    addLineObject = hit.transform.gameObject;
                //    //    outLine.addline(addLineObject);
                //    //}

                //}
                //else
                //{
                //    //if (addLineObject != null) outLine.removeLine(addLineObject);
                //}
            }
            else if (transAction.GetStateDown(SteamVR_Input_Sources.RightHand))
            {
                transHand               = SteamVR_Input_Sources.RightHand;
                isTransTouchDown        = true;
                curTransHand            = rightHand;
                transLineRender.enabled = true;

                RaycastHit hit;
                Physics.Raycast(curTransHand.position, curTransHand.forward, out hit, transDist, transMask);

                //if (hit.transform != null)
                //{
                //    //if (addLineObject == null) {
                //    //    addLineObject = hit.transform.gameObject;
                //    //    outLine.addline(addLineObject);
                //    //}

                //}
                //else {
                //    if(addLineObject != null) outLine.removeLine(addLineObject);
                //}
            }


            if (Input.GetKeyDown(KeyCode.Z))
            {
                goTrans       = true;
                cameraOffset  = HUDCamera.localPosition;
                targetControl = GameManager.Instance.LookUpMultiControl("SpiralElevator");
                playerRobot.transform.parent = null;
                playerRobot.gameObject.SetActive(true);
            }
            if (Input.GetKeyDown(KeyCode.X))
            {
                goTrans       = true;
                cameraOffset  = HUDCamera.localPosition;
                targetControl = GameManager.Instance.LookUpMultiControl("RoboArm");
                playerRobot.transform.parent = null;
                playerRobot.gameObject.SetActive(true);
            }
            if (Input.GetKeyDown(KeyCode.C))
            {
                goTrans       = true;
                cameraOffset  = HUDCamera.localPosition;
                targetControl = GameManager.Instance.LookUpMultiControl("Drone");
                playerRobot.transform.parent = null;
                playerRobot.gameObject.SetActive(true);
            }

            if (Input.GetKeyDown(KeyCode.Space))
            {
                goTrans       = true;
                cameraOffset  = HUDCamera.localPosition;
                targetControl = GameManager.Instance.LookUpMultiControl("PlayerRobot");
                playerRobot.transform.gameObject.SetActive(false);
            }
        }
        else
        {
            transLineRender.positionCount = 2;
            transLineRender.SetPosition(0, curTransHand.position);
            transLineRender.SetPosition(1, curTransHand.position + transDist * curTransHand.forward);
            if (transAction.GetStateUp(transHand))
            {
                isTransTouchDown        = false;
                transLineRender.enabled = false;


                RaycastHit hit;
                Physics.Raycast(curTransHand.position, curTransHand.forward, out hit, transDist, transMask);

                if (hit.transform != null)
                {
                    Debug.Log(hit.transform.name);
                    //if (addLineObject != null) outLine.removeLine(addLineObject);

                    targetControl = GameManager.Instance.LookUpMultiControl(hit.transform.parent.name);

                    goTrans          = true;
                    blackOut.enabled = true;
                    //SteamVR_Fade.Start(Color.clear, 0);
                    //SteamVR_Fade.Start(Color.black, 2.0f);
                    if (roboMod)
                    {
                        //HUDCamera.GetComponent<Camera>().enabled = false;
                        //UnityEngine.XR.InputTracking.disablePositionalTracking = true;

                        transMask = oringinMask;
                        playerRobot.transform.localPosition = new Vector3(HUDCamera.localPosition.x, 0, HUDCamera.localPosition.z);
                        playerRobot.transform.rotation      = Quaternion.LookRotation(new Vector3(HUDCamera.forward.x, 0, HUDCamera.forward.z), Vector3.up);
                        //playerRobot.transform.parent = null;

                        playerRobot.gameObject.SetActive(true);
                        //if (targetControl is RoboArmControl) playerRobot.canFall = true;
                    }
                    else
                    {
                        //HUDCamera.GetComponent<Camera>().enabled = enabled;
                        //UnityEngine.XR.InputTracking.disablePositionalTracking = false;
                        transMask = otherControlMask;
                        playerRobot.transform.gameObject.SetActive(false);
                        if (targetControl is RoboArmControl)
                        {
                            playerRobot.canFall = false;
                        }
                    }
                }
            }
        }
    }