Exemple #1
0
 private void Update()
 {
     if (NRInput.GetButtonDown(ControllerButton.HOME) && ARCinimaScene.isActive)
     {
         OnCancel();
     }
 }
        private void Update()
        {
            var deltaTouch = NRInput.GetDeltaTouch();

            if (deltaTouch.y > float.Epsilon)
            {
                return;
            }

            var isSwipeRight = deltaTouch.x > float.Epsilon;
            var isSwipeLeft  = deltaTouch.x < -float.Epsilon;

            switch (_state)
            {
            case State.Disabled:
                break;

            case State.Idle:
                if (isSwipeRight)
                {
                    StartCoroutine(nameof(Record));
                }
                break;

            case State.Record:
                if (isSwipeLeft)
                {
                    StartCoroutine(nameof(Stop));
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemple #3
0
 private void Update()
 {
     if (NRInput.GetButtonDown(ControllerButton.HOME) && !Key.Equals("cinima") && isActive)
     {
         SceneSwitchManager.Instance.GoToMainScene();
     }
 }
Exemple #4
0
 private void OnDisable()
 {
     NRInput.RemoveClickListener(ControllerHandEnum.Right, ControllerButton.HOME, OnHomeButtonClick);
     NRInput.RemoveClickListener(ControllerHandEnum.Left, ControllerButton.HOME, OnHomeButtonClick);
     NRInput.RemoveClickListener(ControllerHandEnum.Right, ControllerButton.APP, OnAppButtonClick);
     NRInput.RemoveClickListener(ControllerHandEnum.Left, ControllerButton.APP, OnAppButtonClick);
 }
Exemple #5
0
        public override void Update()
        {
            base.Update();

            if (controller == null)
            {
                NRInput.LaserVisualActive   = false;
                NRInput.ReticleVisualActive = false;
                var inputSystem = Service as IMixedRealityInputSystem;
                var handedness  = NRInput.DomainHand == ControllerHandEnum.Left ? Handedness.Left : Handedness.Right;
                var pointers    = RequestPointers(SupportedControllerType.ArticulatedHand, handedness);
                var inputSource = inputSystem?.RequestNewGenericInputSource($"Nreal Light Controller", pointers, InputSourceType.Controller);
                controller = new NrealLightController(Microsoft.MixedReality.Toolkit.TrackingState.NotTracked, handedness, inputSource);
                controller.SetupConfiguration(typeof(NrealLightController));
                for (int i = 0; i < controller.InputSource?.Pointers?.Length; i++)
                {
                    controller.InputSource.Pointers[i].Controller = controller;
                }
                inputSystem.RaiseSourceDetected(controller.InputSource, controller);
            }
            controller.UpdateController();

            // Change RaycastMode
            if (NRInput.GetButtonUp(ControllerButton.HOME))
            {
                var inputSystem = Service as IMixedRealityInputSystem;
                inputSystem.RaiseSourceLost(controller.InputSource, controller);
                controller          = null;
                NRInput.RaycastMode = NRInput.RaycastMode == RaycastModeEnum.Laser ? RaycastModeEnum.Gaze : RaycastModeEnum.Laser;
            }
        }
Exemple #6
0
        private void UpdateScroll()
        {
            if (controlZoom == false)
            {
                if (m_PreviousPos == Vector2.zero)
                {
                    return;
                }
                Vector2 deltaMove = NRInput.GetTouch() - m_PreviousPos;
                m_PreviousPos = NRInput.GetTouch();

                modelTarget.Rotate(m_AroundLocalAxis, deltaMove.x * m_TouchScrollSpeed * Time.deltaTime, Space.Self);
            }
            else
            {
                if (m_PreviousPos == Vector2.zero)
                {
                    return;
                }
                Vector2 deltaMove = NRInput.GetTouch() - m_PreviousPos;
                m_PreviousPos = NRInput.GetTouch();

                modelTarget.position = new Vector3(0f, 0f, modelTarget.position.z + deltaMove.y * m_TouchZoomScrollSpeed * Time.deltaTime);
                //  modelTarget.position = new Vector3(modelTarget.position.z + deltaMove.x * m_TouchZoomScrollSpeed * Time.deltaTime, 0f,0f);
            }
        }
Exemple #7
0
        void Update()
        {
            // If the player doesn't click the trigger button, we are done with this update.
            if (!NRInput.GetButtonDown(ControllerButton.TRIGGER))
            {
                return;
            }

            //code to Instantiate multiple Andy Models


            // Get controller laser origin.
            Transform laserAnchor = NRInput.AnchorsHelper.GetAnchor(ControllerAnchorEnum.RightLaserAnchor);

            RaycastHit hitResult;

            if (Physics.Raycast(new Ray(laserAnchor.transform.position, laserAnchor.transform.forward), out hitResult, 10))
            {
                if (hitResult.collider.gameObject != null && hitResult.collider.gameObject.GetComponent <NRTrackableBehaviour>() != null)
                {
                    var behaviour = hitResult.collider.gameObject.GetComponent <NRTrackableBehaviour>();
                    if (behaviour.Trackable.GetTrackableType() != TrackableType.TRACKABLE_PLANE)
                    {
                        return;
                    }

                    // Instantiate Andy model at the hit point / compensate for the hit point rotation.
                    //Instantiate(AndyPlanePrefab, hitResult.point, Quaternion.identity, behaviour.transform);
                    //Debug.Log(hitResult.point.ToString());

                    //code to Instantiate multiple Andy Models
                }
            }
        }
 private void Update()
 {
     if (NRInput.GetButtonDown(ControllerButton.HOME))
     {
         OnCancel();
     }
 }
Exemple #9
0
 /// <summary> Refresh information texts. </summary>
 private void RefreshInfoTexts()
 {
     mainInfoText.text =
         "controller count: " + NRInput.GetAvailableControllersCount().ToString() + "\n"
         + "type: " + NRInput.GetControllerType().ToString() + "\n"
         + "current debug hand: " + m_CurrentDebugHand.ToString() + "\n"
         + "position available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_POSITION).ToString() + "\n"
         + "rotation available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_ROTATION).ToString() + "\n"
         + "gyro available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_GYRO).ToString() + "\n"
         + "accel available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_ACCEL).ToString() + "\n"
         + "mag available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_MAG).ToString() + "\n"
         + "battery available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_BATTERY).ToString() + "\n"
         + "vibration available: " + NRInput.GetControllerAvailableFeature(ControllerAvailableFeature.CONTROLLER_AVAILABLE_FEATURE_HAPTIC_VIBRATE).ToString() + "\n"
         + "rotation: " + NRInput.GetRotation(m_CurrentDebugHand).ToString("F3") + "\n"
         + "position: " + NRInput.GetPosition(m_CurrentDebugHand).ToString("F3") + "\n"
         + "touch: " + NRInput.GetTouch(m_CurrentDebugHand).ToString("F3") + "\n"
         + "trigger button: " + NRInput.GetButton(m_CurrentDebugHand, ControllerButton.TRIGGER).ToString() + "\n"
         + "home button: " + NRInput.GetButton(m_CurrentDebugHand, ControllerButton.HOME).ToString() + "\n"
         + "app button: " + NRInput.GetButton(m_CurrentDebugHand, ControllerButton.APP).ToString() + "\n"
         + "grip button: " + NRInput.GetButton(m_CurrentDebugHand, ControllerButton.GRIP).ToString() + "\n"
         + "touchpad button: " + NRInput.GetButton(m_CurrentDebugHand, ControllerButton.TOUCHPAD_BUTTON).ToString() + "\n"
         + "gyro: " + NRInput.GetGyro(m_CurrentDebugHand).ToString("F3") + "\n"
         + "accel: " + NRInput.GetAccel(m_CurrentDebugHand).ToString("F3") + "\n"
         + "mag: " + NRInput.GetMag(m_CurrentDebugHand).ToString("F3") + "\n"
         + "battery: " + NRInput.GetControllerBattery(m_CurrentDebugHand);
     extraInfoText.text = m_ExtraInfoStr;
     //Debug.Log("istouching:" + NRInput.IsTouching() + " value:" + NRInput.GetTouch(m_CurrentDebugHand).ToString("F3"));
     PrintInputState();
 }
Exemple #10
0
    void Update()
    {
        #region PlayersTurnNr Logic
        //Player has to press trigger button to go on
        if (!NRInput.GetButtonDown(ControllerButton.TRIGGER))
        {
            return;
        }

        //Must have 2 players in room
        if (PhotonNetwork.PlayerList.Length < 2)
        {
            return;
        }

        //Must be players turn
        if (PhotonNetwork.LocalPlayer.ActorNumber != PlayerInPlay)
        {
            return;
        }
        #endregion PlayersTurnNr Logic

        #region Select GameField
        // Get controller laser origin.
        Transform laserAnchor = NRInput.AnchorsHelper.GetAnchor(NRInput.RaycastMode == RaycastModeEnum.Gaze ? ControllerAnchorEnum.GazePoseTrackerAnchor : ControllerAnchorEnum.RightLaserAnchor);
        //Ray ray;
        if (Physics.Raycast(new Ray(laserAnchor.transform.position, laserAnchor.transform.forward), out hit, 20))
        {
            photonView.RPC("exoh_prefab", RpcTarget.All, hit.transform.position, Quaternion.identity, hit.transform.name);
        }
        #endregion Select GameField
    }
    //使用Joystick输入
    private void UpdateJoystickAxis()
    {
        var   touchpos = NRInput.GetTouch();
        float xAxis    = touchpos.x;
        float yAxis    = touchpos.y;

        if (Mathf.Abs(yAxis) > 0.1f)
        {
            targetControlZDistance += yAxis * distanceIncrementOnSwipe * Time.deltaTime;
            targetControlZDistance  = Mathf.Clamp(targetControlZDistance,
                                                  distanceFromControllerMin,
                                                  distanceFromControllerMax);
            controlZDistance = targetControlZDistance;
        }
        if (Mathf.Abs(xAxis) > 0.8f)
        {
            if (enableScale)
            {
                if (xAxis < 0)
                {
                    transform.localScale = Vector3.Lerp(transform.localScale, minScale, 1f * Time.deltaTime);
                }
                else
                {
                    transform.localScale = Vector3.Lerp(transform.localScale, maxScale, 0.1f * Time.deltaTime);
                }
            }
            else if (enableRotate)
            {
                touchPosXRemap = -Mathf.Sign(xAxis) * 0.01f * (objectInverted ? -1f : 1f);
                verifyRotation = verifyRotation * Quaternion.AngleAxis(touchPosXRemap * Mathf.Rad2Deg, Vector3.up);
            }
        }
    }
        private void Update()
        {
            if ((NRInput.GetButtonDown(ControllerButton.APP) || Input.GetKeyDown(KeyCode.Q)) && m_IsInTest)
            {
                BackToMainPage();
            }

            if (Input.GetKeyDown(KeyCode.S))
            {
                JumpTo(TestType.Slam);
            }
            if (Input.GetKeyDown(KeyCode.P))
            {
                JumpTo(TestType.Plane);
            }
            if (Input.GetKeyDown(KeyCode.M))
            {
                JumpTo(TestType.Marker);
            }
            if (Input.GetKeyDown(KeyCode.O))
            {
                JumpTo(TestType.M2p);
            }
            if (Input.GetKeyDown(KeyCode.N))
            {
                JumpTo(TestType.SingleMarker);
            }
        }
Exemple #13
0
 private void Update()
 {
     if (NRInput.GetButtonDown(ControllerButton.HOME))
     {
         GoToMainScene();
     }
 }
    void Update()
    {
        if ((!useMarker && !isRoomLoaded && NRInput.GetButtonUp(ControllerHandEnum.Left, ControllerButton.TRIGGER)))
        {
            RootID = 0;
        }

        if (RootID != -1 && !isRoomLoaded)
        {
            isRoomLoaded = true;
            if (OnLoadRoom != null)
            {
                OnLoadRoom();
            }
            SceneManager.LoadSceneAsync("AWE_Room");
        }

        //// Reset the world coordinates
        //if (ARInput.GetButtonDown(ControllerButtonEnum.OK) || ARInput.GetButtonDown(ControllerButtonEnum.HOME))
        //    specialNumber = 0;
        //// Double click OK, then click CANCEL for five times will reset marker
        //if (ARInput.GetButtonUp(ControllerButtonEnum.CANCEL))
        //{
        //    specialNumber -= 1;
        //    if (specialNumber == 1)
        //        ResetMarker();
        //}
    }
Exemple #15
0
        private void OnEnable()
        {
            NRInput.AddClickListener(ControllerHandEnum.Right, ControllerButton.HOME, OnHomeButtonClick);
            NRInput.AddClickListener(ControllerHandEnum.Left, ControllerButton.HOME, OnHomeButtonClick);
            NRInput.AddClickListener(ControllerHandEnum.Right, ControllerButton.APP, OnAppButtonClick);
            NRInput.AddClickListener(ControllerHandEnum.Left, ControllerButton.APP, OnAppButtonClick);

            NRDevice.OnAppQuit += OnApplicationQuit;
        }
Exemple #16
0
        private void Update()
        {
            if (NRInput.GetButtonDown(ControllerButton.HOME) || Input.GetKeyDown(KeyCode.R))
            {
                NRSessionManager.Instance.Recenter();
            }

            CheckQuit();
        }
Exemple #17
0
 private void PrintInputState()
 {
     Debug.LogFormat("istouching:{0} getbutton app:{1} trigger:{2} home:{3} \n" +
                     "getbuttondown app:{4} trigger:{5} home:{6} \n" +
                     "getbuttonup app:{7} trigger:{8} home:{9} \n" +
                     "origin touch:[{10}] gettouch:{11}", NRInput.IsTouching(), NRInput.GetButton(ControllerButton.APP), NRInput.GetButton(ControllerButton.TRIGGER), NRInput.GetButton(ControllerButton.HOME)
                     , NRInput.GetButtonDown(ControllerButton.APP), NRInput.GetButtonDown(ControllerButton.TRIGGER), NRInput.GetButtonDown(ControllerButton.HOME)
                     , NRInput.GetButtonUp(ControllerButton.APP), NRInput.GetButtonUp(ControllerButton.TRIGGER), NRInput.GetButtonUp(ControllerButton.HOME)
                     , NRVirtualDisplayer.SystemButtonState.ToString(), NRInput.GetTouch(m_CurrentDebugHand).ToString("F3"));
 }
 public override void TriggerHapticVibration(int index, float durationSeconds = 0.1f, float frequency = 1000f, float amplitude = 0.5f)
 {
     if (!Inited)
     {
         return;
     }
     if (NRInput.GetAvailableControllersCount() > 0 && NRInput.GetControllerType() == ControllerType.CONTROLLER_TYPE_PHONE)
     {
         OriginPhoneVibrateTool.TriggerVibrate(durationSeconds);
     }
 }
Exemple #19
0
        /// <summary> Updates the scroll. </summary>
        private void UpdateScroll()
        {
            if (m_PreviousPos == Vector2.zero)
            {
                return;
            }
            Vector2 deltaMove = NRInput.GetTouch() - m_PreviousPos;

            m_PreviousPos = NRInput.GetTouch();
            modelTarget.Rotate(m_AroundLocalAxis, deltaMove.x * m_TouchScrollSpeed * Time.deltaTime, Space.Self);
        }
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space) || NRInput.GetButtonDown(ControllerButton.APP))
            {
                PreviewScreen.gameObject.SetActive(!PreviewScreen.gameObject.activeInHierarchy);

                NRInput.LaserVisualActive   = !PreviewScreen.gameObject.activeInHierarchy;
                NRInput.ReticleVisualActive = !PreviewScreen.gameObject.activeInHierarchy;
            }
            this.BindPreviewTOController();
        }
Exemple #21
0
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.R) || NRInput.GetButtonDown(ControllerButton.TRIGGER))
        {
            Recorder.StartRecord();
        }

        if (Input.GetKeyDown(KeyCode.T) || NRInput.GetButtonDown(ControllerButton.HOME))
        {
            Recorder.StopRecord();
        }
    }
        /// <summary> Updates this object. </summary>
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space) || NRInput.GetButtonDown(ControllerButton.TRIGGER))
            {
                TakeAPhoto();
            }

            if (m_PhotoCaptureObject != null)
            {
                Previewer.SetData(m_PhotoCaptureObject.PreviewTexture, true);
            }
        }
Exemple #23
0
        /// <summary> Updates this object. </summary>
        private void Update()
        {
            if (NRInput.GetAvailableControllersCount() < 2)
            {
                m_CurrentDebugHand = NRInput.DomainHand;
            }
            else
            {
                if (NRInput.GetButtonDown(ControllerHandEnum.Right, ControllerButton.TRIGGER))
                {
                    m_CurrentDebugHand = ControllerHandEnum.Right;
                }
                else if (NRInput.GetButtonDown(ControllerHandEnum.Left, ControllerButton.TRIGGER))
                {
                    m_CurrentDebugHand = ControllerHandEnum.Left;
                }
            }

            if (NRInput.GetButtonDown(m_CurrentDebugHand, ControllerButton.TRIGGER))
            {
                AddExtraInfo("trigger_btn_down");
            }

            if (NRInput.GetButtonDown(m_CurrentDebugHand, ControllerButton.HOME))
            {
                AddExtraInfo("home_btn_down");
            }

            if (NRInput.GetButtonDown(m_CurrentDebugHand, ControllerButton.APP))
            {
                AddExtraInfo("app_btn_down");
            }

            if (NRInput.GetButtonUp(m_CurrentDebugHand, ControllerButton.TRIGGER))
            {
                AddExtraInfo("trigger_btn_up");
            }

            if (NRInput.GetButtonUp(m_CurrentDebugHand, ControllerButton.HOME))
            {
                AddExtraInfo("home_btn_up");
            }

            if (NRInput.GetButtonUp(m_CurrentDebugHand, ControllerButton.APP))
            {
                AddExtraInfo("app_btn_up");
            }

            FollowMainCam();
            RefreshInfoTexts();
        }
Exemple #24
0
        void Update()
        {
            if (NRInput.GetButtonDown(ControllerButton.TRIGGER))
            {
                RGBCamTexture.Play();
            }

            if (NRInput.GetButtonDown(ControllerButton.HOME))
            {
                RGBCamTexture.Stop();
            }

            FrameCount.text = RGBCamTexture.FrameCount.ToString();
        }
Exemple #25
0
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space) || NRInput.GetButtonDown(ControllerButton.APP))
            {
                Root.SetActive(!Root.activeInHierarchy);

                NRInput.LaserVisualActive   = !Root.activeInHierarchy;
                NRInput.ReticleVisualActive = !Root.activeInHierarchy;
            }
            if (isBindToController)
            {
                this.BindPreviewTOController();
            }
        }
        public override void Update()
        {
            base.Update();

            if (controller == null)
            {
                NRInput.LaserVisualActive   = false;
                NRInput.ReticleVisualActive = false;

                var inputSystem = Service as IMixedRealityInputSystem;
                var handedness  = NRInput.DomainHand == ControllerHandEnum.Left ? Handedness.Left : Handedness.Right;
                var pointers    = RequestPointers(SupportedControllerType.ArticulatedHand, handedness);
                var inputSource = inputSystem?.RequestNewGenericInputSource($"Nreal Light Controller", pointers, InputSourceType.Hand);
                controller = new NrealLightController(Microsoft.MixedReality.Toolkit.TrackingState.NotTracked, handedness, inputSource);
                controller.SetupConfiguration(typeof(NrealLightController));
                for (int i = 0; i < controller.InputSource?.Pointers?.Length; i++)
                {
                    controller.InputSource.Pointers[i].Controller = controller;
                }
                inputSystem.RaiseSourceDetected(controller.InputSource, controller);
            }
            controller.UpdateController();

            // Change RaycastMode
            if (NRInput.GetButtonUp(ControllerButton.APP))
            {
                var inputSystem = Service as IMixedRealityInputSystem;
                inputSystem.RaiseSourceLost(controller.InputSource, controller);
                inputSystem.RaiseSourceDetected(controller.InputSource, controller);
                NRInput.RaycastMode = NRInput.RaycastMode == RaycastModeEnum.Laser ? RaycastModeEnum.Gaze : RaycastModeEnum.Laser;
            }

            // Set MixedRealityInputSystem
            if (homeMenu == null)
            {
                homeMenu = GameObject.FindObjectOfType <NRKernal.NRExamples.NRHomeMenu>();
                var canvas = homeMenu?.GetComponentInChildren <Canvas>();
                if (canvas != null)
                {
                    if (canvas.gameObject.GetComponent <GraphicRaycaster>() == null)
                    {
                        canvas.gameObject.AddComponent <GraphicRaycaster>();
                    }
                    if (canvas.gameObject.GetComponent <CanvasUtility>() == null)
                    {
                        canvas.gameObject.AddComponent <CanvasUtility>();
                    }
                }
            }
        }
Exemple #27
0
 /// <summary> Updates this object. </summary>
 private void Update()
 {
     if (NRInput.GetButtonDown(ControllerButton.TRIGGER))
     {
         m_PreviousPos = NRInput.GetTouch();
     }
     else if (NRInput.GetButton(ControllerButton.TRIGGER))
     {
         UpdateScroll();
     }
     else if (NRInput.GetButtonUp(ControllerButton.TRIGGER))
     {
         m_PreviousPos = Vector2.zero;
     }
 }
Exemple #28
0
 private void CheckButtonLongPress()
 {
     if (NRInput.GetButton(ControllerButton.HOME))
     {
         m_ButtonPressTimer += Time.deltaTime;
         if (m_ButtonPressTimer > BUTTON_LONG_PRESS_DURATION)
         {
             m_ButtonPressTimer = float.MinValue;
             NRHomeMenu.Show();
         }
     }
     else
     {
         m_ButtonPressTimer = 0f;
     }
 }
        private void Update()
        {
            var deltaTouch = NRInput.GetDeltaTouch();

            if (deltaTouch.y > float.Epsilon)
            {
                return;
            }

            var isSwipeRight = deltaTouch.x > float.Epsilon;
            var isSwipeLeft  = deltaTouch.x < -float.Epsilon;

            switch (_state)
            {
            case State.Idle:
                if (isSwipeRight)
                {
                    StartCoroutine(nameof(Play));
                }
                break;

            case State.Play:
                if (isSwipeLeft)
                {
                    StartCoroutine(nameof(Stop));
                }
                else if (NRInput.GetButtonUp(ControllerButton.TRIGGER))
                {
                    StartCoroutine(nameof(Pause));
                }
                break;

            case State.Pause:
                if (isSwipeLeft)
                {
                    StartCoroutine(nameof(Stop));
                }
                else if (NRInput.GetButtonUp(ControllerButton.TRIGGER))
                {
                    StartCoroutine(nameof(Play));
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemple #30
0
    //使用touchpad输入
    private void UpdateTouchPad()
    {
        var touchpos = NRInput.GetTouch(ControllerHandEnum.Right);

        xAxis = touchpos.x;
        yAxis = touchpos.y;
        if (xAxis != 0f || yAxis != 0f)
        {
            if (lastTouchPos == Vector2.zero)
            {
                OnTouchDown(xAxis, yAxis);
            }
            deltaTouch     = (lastTouchPos == Vector2.zero) ? Vector2.zero : new Vector2(xAxis - lastTouchPos.x, yAxis - lastTouchPos.y);
            lastTouchPos.x = xAxis;
            lastTouchPos.y = yAxis;
            if (IsRotating)
            {
                transform.Rotate(-arCam.up, deltaTouch.x * rotateSensitivity, Space.World);
                transform.Rotate(arCam.right, deltaTouch.y * rotateSensitivity, Space.World);
            }
        }
        else
        {
            if (lastTouchPos != Vector2.zero)
            {
                OnTouchUp();
            }
            velocity_x += acceler_x * Time.deltaTime;
            velocity_y += acceler_y * Time.deltaTime;
            if (Mathf.Sign(velocity_x) == Mathf.Sign(acceler_x))
            {
                velocity_x = 0f;
            }
            if (Mathf.Sign(velocity_y) == Mathf.Sign(acceler_y))
            {
                velocity_y = 0f;
            }
            IsRotating = (velocity_x != 0f || velocity_y != 0f);
            if (IsRotating)
            {
                transform.Rotate(-arCam.up, velocity_x * rotateSensitivity * Time.deltaTime, Space.World);
                transform.Rotate(arCam.right, velocity_y * rotateSensitivity * Time.deltaTime, Space.World);
            }
        }
    }