// ------------------------------------------- /* * RotateCamera */ private void RotateCamera() { RotationAxes axes = RotationAxes.None; if ((Input.GetAxis("Mouse X") != 0) || (Input.GetAxis("Mouse Y") != 0)) { axes = RotationAxes.MouseXAndY; } if ((axes != RotationAxes.Controller) && (axes != RotationAxes.None)) { if (axes == RotationAxes.MouseXAndY) { float rotationX = CameraLocal.localEulerAngles.y + Input.GetAxis("Mouse X") * SensitivityX; m_rotationY += Input.GetAxis("Mouse Y") * SensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, MinimumY, MaximumY); CameraLocal.localEulerAngles = new Vector3(-m_rotationY, rotationX, 0); } else if (axes == RotationAxes.MouseX) { CameraLocal.Rotate(0, Input.GetAxis("Mouse X") * SensitivityX, 0); } else { m_rotationY += Input.GetAxis("Mouse Y") * SensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, MinimumY, MaximumY); CameraLocal.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0); } } }
Vector3 GetRotationAxis(RotationAxes axisOfRotation) { switch (axisOfRotation) { case RotationAxes.right: return(transform.parent.TransformDirection(Vector3.right)); case RotationAxes.left: return(transform.parent.TransformDirection(Vector3.left)); case RotationAxes.up: return(transform.parent.TransformDirection(Vector3.up)); case RotationAxes.down: return(transform.parent.TransformDirection(Vector3.down)); case RotationAxes.forward: return(transform.parent.TransformDirection(Vector3.back)); case RotationAxes.back: return(transform.parent.TransformDirection(Vector3.forward)); default: Debug.LogError("Unreachable"); return(Vector3.zero); } }
void SetAxisOfRotationBasedOnPlayerPosition(Vector3 playerPos) { if (GetPlayerLerpPosition(playerPos) > 0.5) { // Swap right/left, up/down, or forward/back localAxisOfRotation = (RotationAxes)((((int)localAxisOfRotation % 2) * -2 + 1) + (int)localAxisOfRotation); } }
private void Start() { axes = RotationAxes.MouseXAndY; sensitivityHor = GameManager.Instance.sensitivityHor; sensitivityVert = GameManager.Instance.sensitivityVert; minimumVert = GameManager.Instance.minimumVert; maximumVert = GameManager.Instance.maximumVert; }
public void lockRota() { if (axes == RotationAxes.locked) { axes = RotationAxes.MouseXAndY; } else { axes = RotationAxes.locked; } }
public override void Reset() { gameObject = null; axes = RotationAxes.MouseXAndY; sensitivityX = 15f; sensitivityY = 15f; minimumX = -360f; maximumX = 360f; minimumY = -60f; maximumY = 60f; everyFrame = true; }
public override void Reset() { gameObject = null; axes = RotationAxes.MouseXAndY; sensitivityX = 15f; sensitivityY = 15f; minimumX = -360f; maximumX = 360f; minimumY = -60f; maximumY = 60f; everyFrame = true; }
public override void Reset() { gameObject = null; axes = RotationAxes.MouseXAndY; sensitivityX = 15f; sensitivityY = 15f; minimumX = new FsmFloat {UseVariable = true}; maximumX = new FsmFloat { UseVariable = true }; minimumY = -60f; maximumY = 60f; everyFrame = true; }
// ------------------------------------------- /* * We will apply the movement to the camera */ private void MoveCameraWithMouse() { if (YourVRUIScreenController.Instance.BlockMouseMovement) { return; } m_axes = RotationAxes.None; // USE ARROW KEYS TO MOVE #if UNITY_EDITOR || UNITY_STANDALONE_WIN if (m_characterController != null) { Vector3 forward = Input.GetAxis("Vertical") * transform.TransformDirection(YourVRUIScreenController.Instance.GameCamera.transform.forward) * MoveSpeed; m_characterController.Move(forward * Time.deltaTime); m_characterController.SimpleMove(Physics.gravity); } #endif if ((Input.GetAxis("Mouse X") != 0) || (Input.GetAxis("Mouse Y") != 0)) { m_axes = RotationAxes.MouseXAndY; } // USE MOUSE TO ROTATE VIEW if ((m_axes != RotationAxes.Controller) && (m_axes != RotationAxes.None)) { if (m_axes == RotationAxes.MouseXAndY) { float rotationX = YourVRUIScreenController.Instance.GameCamera.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * m_sensitivityX; m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); YourVRUIScreenController.Instance.GameCamera.transform.localEulerAngles = new Vector3(-m_rotationY, rotationX, 0); } else if (m_axes == RotationAxes.MouseX) { YourVRUIScreenController.Instance.GameCamera.transform.Rotate(0, Input.GetAxis("Mouse X") * m_sensitivityX, 0); } else { m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); YourVRUIScreenController.Instance.GameCamera.transform.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0); } } }
public override void Reset() { gameObject = null; axes = RotationAxes.MouseXAndY; sensitivityX = 15f; sensitivityY = 15f; minimumX = new FsmFloat { UseVariable = true }; maximumX = new FsmFloat { UseVariable = true }; minimumY = -60f; maximumY = 60f; everyFrame = true; }
// ------------------------------------------- /* * We will apply the movement to the camera */ private void MoveCameraWithMouse() { #if UNITY_EDITOR || UNITY_STANDALONE_WIN if (YourVRUIScreenController.Instance.BlockMouseMovement) { return; } m_axes = RotationAxes.None; if ((Input.GetAxis("Mouse X") != 0) || (Input.GetAxis("Mouse Y") != 0)) { m_axes = RotationAxes.MouseXAndY; } // USE MOUSE TO ROTATE VIEW if ((m_axes != RotationAxes.Controller) && (m_axes != RotationAxes.None)) { if (m_axes == RotationAxes.MouseXAndY) { float rotationX = YourVRUIScreenController.Instance.GameCamera.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * m_sensitivityX; m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); YourVRUIScreenController.Instance.GameCamera.transform.localEulerAngles = new Vector3(-m_rotationY, rotationX, 0); } else if (m_axes == RotationAxes.MouseX) { YourVRUIScreenController.Instance.GameCamera.transform.Rotate(0, Input.GetAxis("Mouse X") * m_sensitivityX, 0); } else { m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); YourVRUIScreenController.Instance.GameCamera.transform.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0); } } #else GyroModifyCamera(); #endif }
void onPause() { // Disable Pause in Reload Mode // Bugfix hack: Pause does not release in Reload Menu. if (GameState == _GameState.Reload) { UnityEngine.Debug.Log("PlayerController.cs: Bypass Pause in Reload Menu"); return; } if (Time.timeScale == 1) { _cachedAxes = axes; _cachedGameState = GameState; axes = RotationAxes.None; GameState = _GameState.Paused; audioSources[10].mute = true; audioSources[11].mute = true; Time.timeScale = 0; if (Application.platform == RuntimePlatform.IPhonePlayer) { ChartBoostBinding.trackEvent("On Pause Event"); } } else { axes = _cachedAxes; GameState = _cachedGameState; audioSources[10].mute = false; audioSources[11].mute = false; Time.timeScale = 1; } }
/// Called when a finger touches the screen. public void Press(int id, Vector2 screenPosition) { Transform target = GetTargetObject(screenPosition); if (!target != null && target.gameObject.layer == layerGizmos) { isDraggingGizmo = true; currentPlanePt = currentSelected.position; currentPlaneNormFw = currentSelected.forward; currentPlaneNormRt = currentSelected.right; currentPlaneNormUp = currentSelected.up; currentAxis = (RotationAxes)Enum.Parse(typeof(RotationAxes), target.name); switch (currentAxis) { case RotationAxes.XAxis: startMouseCoords = currentMouseCoords = GetAxisPlaneIntersect(screenPosition, currentPlaneNormRt); previousRotation = 0f; break; case RotationAxes.ZAxis: startMouseCoords = currentMouseCoords = GetAxisPlaneIntersect(screenPosition, currentPlaneNormFw); previousRotation = 0f; break; case RotationAxes.YAxis: startMouseCoords = currentMouseCoords = GetAxisPlaneIntersect(screenPosition, currentPlaneNormUp); previousRotation = 0f; break; } SendTransformUpdate(target.eulerAngles); startPos = currentSelected.eulerAngles; } }
// ------------------------------------------- /* * We will apply the movement to the camera */ private void MoveCameraWithMouse() { if (Input.GetKey(KeyCode.LeftShift)) { m_axes = RotationAxes.None; if ((Input.GetAxis("Mouse X") != 0) || (Input.GetAxis("Mouse Y") != 0)) { m_axes = RotationAxes.MouseXAndY; } // USE MOUSE TO ROTATE VIEW if ((m_axes != RotationAxes.Controller) && (m_axes != RotationAxes.None)) { if (m_axes == RotationAxes.MouseXAndY) { float rotationX = m_cameraLocal.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * m_sensitivityX; m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); m_cameraLocal.transform.localEulerAngles = new Vector3(-m_rotationY, rotationX, 0); } else if (m_axes == RotationAxes.MouseX) { m_cameraLocal.transform.Rotate(0, Input.GetAxis("Mouse X") * m_sensitivityX, 0); } else { m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); m_cameraLocal.transform.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0); } } } }
public void BothAxis() { axes = RotationAxes.MouseXAndY; }
public void OnlyYAxis() { axes = RotationAxes.MouseX; }
public void OnlyXAxis() { axes = RotationAxes.MouseY; }
void onPause() { // Disable Pause in Reload Mode // Bugfix hack: Pause does not release in Reload Menu. if (GameState == _GameState.Reload) { UnityEngine.Debug.Log("PlayerController.cs: Bypass Pause in Reload Menu"); return; } if( Time.timeScale == 1 ) { _cachedAxes = axes; _cachedGameState = GameState; axes = RotationAxes.None; GameState = _GameState.Paused; audioSources[10].mute = true; audioSources[11].mute = true; Time.timeScale = 0; if( Application.platform == RuntimePlatform.IPhonePlayer ) ChartBoostBinding.trackEvent( "On Pause Event" ); } else { axes = _cachedAxes; GameState = _cachedGameState; audioSources[10].mute = false; audioSources[11].mute = false; Time.timeScale = 1; } }
void Update () { #if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX if (axes == RotationAxes.MouseXAndY) { // Read the mouse input axis rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationX = ClampAngle (rotationX, rotationMinY, rotationMaxY); rotationY = ClampAngle (rotationY, rotationMinX, rotationMaxX); Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up); Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, -Vector3.right); transform.localRotation = originalRotation * xQuaternion * yQuaternion; } else if (axes == RotationAxes.MouseX) { rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotationX = ClampAngle (rotationX, rotationMinY, rotationMaxY); Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up); transform.localRotation = originalRotation * xQuaternion; // When User is told to Tilt Device Left or Right if( TutorialState == _TutorialState.MissionOne ) { if( rotationX < -60 && grid.curPos < 5 ) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } else if( rotationX > 60 && grid.curPos == 5 ) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } else if( axes == RotationAxes.MouseY ) { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = ClampAngle (rotationY, rotationMinX, rotationMaxX); Quaternion yQuaternion = Quaternion.AngleAxis (-rotationY, Vector3.right); transform.localRotation = originalRotation * yQuaternion; } #elif UNITY_IPHONE || UNITY_ANDROID if( axes == RotationAxes.MouseXAndY ) { // Store movement into temporary Vector3 to be applied to transform localRotation.y -= Input.acceleration.y * speed; localRotation.x += FixAcceleration( Input.acceleration ).x * speed; // Clamp rotation within set field of view localRotation.y = ClampAngle( localRotation.y, rotationMinY, rotationMaxY ); localRotation.x = ClampAngle( localRotation.x, rotationMinX, rotationMaxX ); // Apply new cached rotation to transform rotation transform.localEulerAngles = localRotation; } else if( axes == RotationAxes.MouseX ) { localRotation.y -= Input.acceleration.y * speed; localRotation.y = ClampAngle( localRotation.y, rotationMinY, rotationMaxY ); transform.localEulerAngles = localRotation; // When User is told to Tilt Device Left or Right if( TutorialState == _TutorialState.MissionOne ) { if( localRotation.y < -60 && grid.curPos < 5 ) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } else if( localRotation.y > 60 && grid.curPos == 5 ) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } else if( axes == RotationAxes.MouseY ) { localRotation.x += FixAcceleration( Input.acceleration ).x * speed; localRotation.x = ClampAngle( localRotation.x, rotationMinX, rotationMaxX ); transform.localEulerAngles = localRotation; } #endif if( Input.GetMouseButtonUp(0) ) { // When user is able to Shoot if( (int)TutorialState >= (int)_TutorialState.MissionTwo ) { // If user hits ammo sprite, reload instead of shooting Ray ray = UIcam3D.camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if( Physics.Raycast( ray, out hit, 100f, UIMask3D ) ) { if( onTutorialUpdate != null ) onTutorialUpdate( hit.collider.gameObject, DBAccess.instance.userPrefs.userGun ); if( TutorialState == _TutorialState.MissionTwoSecond ) { axes = RotationAxes.None; TutorialState = _TutorialState.InTransition; grid.moveGrid(_TutorialState.None); } } else if( DBAccess.instance.userPrefs.userGun.capacity > 0 ) { // If not in reload or pause, shoot gun. Gun will take care of bullets remaining logic. DBAccess.instance.userPrefs.userGun.Shoot(transform,rayCastmask,gunModel); onTutorialUpdate( null, DBAccess.instance.userPrefs.userGun ); BroadcastMessage( "applyRecoil" ); audioSources[0].Play(); } else audioSources[3].Play(); // When user is told to Shoot Anywhere if( TutorialState == _TutorialState.MissionTwo ) { Debug.Log( DBAccess.instance.userPrefs.userGun.capacity ); if( shotCount < 4 ) shotCount++; else { TutorialState = _TutorialState.None; axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } // When user needs to click on the Tutorial Window else if( TutorialState != _TutorialState.InTransition ) { RaycastHit hit; if( Physics.Raycast(transform.position,UICam.transform.forward,out hit,100f,tutorialMask) ) { if( TutorialState != _TutorialState.MissionOne ) { grid.moveGrid(TutorialState); TutorialState = _TutorialState.InTransition; } if( hit.collider.name == "WindowBG(Calibrate)" ) { CalibrateAccelerometer(); } } } Ray ray2 = UIcam3D.camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit2; if( Physics.Raycast( ray2, out hit2, 100f ) ) hit2.collider.SendMessage( "onHitByRayCast", hit2.collider.gameObject, SendMessageOptions.DontRequireReceiver ); } }
void Update() { #if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX if (axes == RotationAxes.MouseXAndY) { // Read the mouse input axis rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationX = ClampAngle(rotationX, rotationMinY, rotationMaxY); rotationY = ClampAngle(rotationY, rotationMinX, rotationMaxX); Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up); Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, -Vector3.right); transform.localRotation = originalRotation * xQuaternion * yQuaternion; } else if (axes == RotationAxes.MouseX) { rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotationX = ClampAngle(rotationX, rotationMinY, rotationMaxY); Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up); transform.localRotation = originalRotation * xQuaternion; // When User is told to Tilt Device Left or Right if (TutorialState == _TutorialState.MissionOne) { if (rotationX < -60 && grid.curPos < 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } else if (rotationX > 60 && grid.curPos == 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } else if (axes == RotationAxes.MouseY) { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = ClampAngle(rotationY, rotationMinX, rotationMaxX); Quaternion yQuaternion = Quaternion.AngleAxis(-rotationY, Vector3.right); transform.localRotation = originalRotation * yQuaternion; } #elif UNITY_IPHONE || UNITY_ANDROID if (axes == RotationAxes.MouseXAndY) { // Store movement into temporary Vector3 to be applied to transform localRotation.y -= Input.acceleration.y * speed; localRotation.x += FixAcceleration(Input.acceleration).x *speed; // Clamp rotation within set field of view localRotation.y = ClampAngle(localRotation.y, rotationMinY, rotationMaxY); localRotation.x = ClampAngle(localRotation.x, rotationMinX, rotationMaxX); // Apply new cached rotation to transform rotation transform.localEulerAngles = localRotation; } else if (axes == RotationAxes.MouseX) { localRotation.y -= Input.acceleration.y * speed; localRotation.y = ClampAngle(localRotation.y, rotationMinY, rotationMaxY); transform.localEulerAngles = localRotation; // When User is told to Tilt Device Left or Right if (TutorialState == _TutorialState.MissionOne) { if (localRotation.y < -60 && grid.curPos < 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } else if (localRotation.y > 60 && grid.curPos == 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } else if (axes == RotationAxes.MouseY) { localRotation.x += FixAcceleration(Input.acceleration).x *speed; localRotation.x = ClampAngle(localRotation.x, rotationMinX, rotationMaxX); transform.localEulerAngles = localRotation; } #endif if (Input.GetMouseButtonUp(0)) { // When user is able to Shoot if ((int)TutorialState >= (int)_TutorialState.MissionTwo) { // If user hits ammo sprite, reload instead of shooting Ray ray = UIcam3D.camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100f, UIMask3D)) { if (onTutorialUpdate != null) { onTutorialUpdate(hit.collider.gameObject, DBAccess.instance.userPrefs.userGun); } if (TutorialState == _TutorialState.MissionTwoSecond) { axes = RotationAxes.None; TutorialState = _TutorialState.InTransition; grid.moveGrid(_TutorialState.None); } } else if (DBAccess.instance.userPrefs.userGun.capacity > 0) { // If not in reload or pause, shoot gun. Gun will take care of bullets remaining logic. DBAccess.instance.userPrefs.userGun.Shoot(transform, rayCastmask, gunModel); onTutorialUpdate(null, DBAccess.instance.userPrefs.userGun); BroadcastMessage("applyRecoil"); audioSources[0].Play(); } else { audioSources[3].Play(); } // When user is told to Shoot Anywhere if (TutorialState == _TutorialState.MissionTwo) { Debug.Log(DBAccess.instance.userPrefs.userGun.capacity); if (shotCount < 4) { shotCount++; } else { TutorialState = _TutorialState.None; axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } // When user needs to click on the Tutorial Window else if (TutorialState != _TutorialState.InTransition) { RaycastHit hit; if (Physics.Raycast(transform.position, UICam.transform.forward, out hit, 100f, tutorialMask)) { if (TutorialState != _TutorialState.MissionOne) { grid.moveGrid(TutorialState); TutorialState = _TutorialState.InTransition; } if (hit.collider.name == "WindowBG(Calibrate)") { CalibrateAccelerometer(); } } } Ray ray2 = UIcam3D.camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit2; if (Physics.Raycast(ray2, out hit2, 100f)) { hit2.collider.SendMessage("onHitByRayCast", hit2.collider.gameObject, SendMessageOptions.DontRequireReceiver); } } }
private void RotateSelf(RotationAxes axes) { Vector2 speed = CalculateSpeed (); switch(axes) { case RotationAxes.MouseXAndY: rotationX = transform.localEulerAngles.y + speed.x; rotationY += speed.y; rotationY = Mathf.Clamp (rotationY, minYRotation, maxYRotation); transform.localEulerAngles = new Vector3(rotationY, rotationX, 0); break; case RotationAxes.MouseX: rotationX = transform.localEulerAngles.y + speed.x; transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, rotationX, 0); break; case RotationAxes.MouseY: rotationY += speed.y; rotationY = Mathf.Clamp (rotationY, minYRotation, maxYRotation); transform.localEulerAngles = new Vector3(rotationY, transform.localEulerAngles.y, 0); break; } }