- Home /
How do I disable mouse to turning right
Hello everyone, I'm working on a small first person project for people who have a phobia to turn corners. I've tried too long on this code and stuck on it, I'm trying to disable mouse turning right. Which means it must only turn left, up, down, but not right.
I've been successful on disabling up and down (y) but I seem to can't make it happen with right turning (x) Can anyone help me with this to show me What am I doing wrong?
This is the original code which enables turning left, right, up and down (basically, anywhere) Thank you for any advancement
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.FirstPerson
{
[Serializable]
public class MouseLook : MonoBehaviour {
public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
public RotationAxes axes = RotationAxes.MouseXAndY;
public float XSensitivity = 2f;
public float YSensitivity = 2f;
public float MinimumX = -360F;
public float MaximumX = 0F;
public float MinimumY = -360F;
public float MaximumY = 0F;
public bool smooth;
public float smoothTime = 5f;
public bool clampHorizontalRotation = true;
private Quaternion m_CharacterTargetRot;
private Quaternion m_CameraTargetRot;
public void Init(Transform character, Transform camera)
{
m_CharacterTargetRot = character.localRotation;
m_CameraTargetRot = camera.localRotation;
}
public void LookRotation(Transform character, Transform camera)
{
float yRot = CrossPlatformInputManager.GetAxis("Mouse X") * XSensitivity;
float xRot = CrossPlatformInputManager.GetAxis("Mouse Y") * YSensitivity;
m_CharacterTargetRot *= Quaternion.Euler (0f, yRot, 0f);
m_CameraTargetRot *= Quaternion.Euler (-xRot, 0f, 0f);
if(clampHorizontalRotation)
m_CameraTargetRot = ClampRotationAroundYAxis (m_CameraTargetRot);
if(smooth)
{
character.localRotation = Quaternion.Slerp (character.localRotation, m_CharacterTargetRot,
smoothTime * Time.deltaTime);
camera.localRotation = Quaternion.Slerp (camera.localRotation, m_CameraTargetRot,
smoothTime * Time.deltaTime);
}
else
{
character.localRotation = m_CharacterTargetRot;
camera.localRotation = m_CameraTargetRot;
}
}
Quaternion ClampRotationAroundYAxis(Quaternion q)
{
q.x /= q.w;
q.y /= q.w;
q.z /= q.w;
q.w = 1.0f;
float angleY = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x);
angleY = Mathf.Clamp (angleY, MinimumX, MaximumX);
q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleY);
return q;
}
}
}
Your answer
Follow this Question
Related Questions
Why wont my camera controller work,Why isnt my script working for a camera controller? 1 Answer
Save Camera Rotation ERROR (HELP!!!!) 1 Answer
how to show cursor on specific time? 2 Answers
Change Input In Game 1 Answer
Raycast Object Selection 3 Answers