У меня есть объект в моей сцене, который вращается ( RotateAround ) с помощью мыши. и я хочу дать объекту некоторые пределы вращения, например -45 и 45 градусов для оси X, поэтому, когда его вращение становится 45 градусов, он не может выйти за его пределы.
Итак, я попробовал метод Mathf.Clamp в моем скрипте, как вы видите ниже, и он работает нормально для оси Y, объект вращается вокруг своей оси X и не выходит за пределы Y. но по оси X, когда вращение Y объекта достигает O, оно немедленно изменяется на 30 градусов со странным вращением! Подскажите, пожалуйста, что не так в моем коде?
Скрипты вращения:
float sensitivity = 10f;
Vector3 firstPressPos;
Vector3 secondPressPos;
float minRotationX = 45;
float maxRotationX = 100;
float minRotationY = 30;
float maxRotationY = 30;
void Update () {
if (Input.GetMouseButtonDown(0))
{
//save began touch 2d point
firstPressPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
}
if (Input.GetMouseButton(0))
{
//save ended touch 2d point
secondPressPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
if (firstPressPos != secondPressPos)
{
float RotX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;
float RotY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;
transform.RotateAround(Vector3.up, RotX);
transform.RotateAround(Vector3.right, -RotY);
Vector3 angles = transform.eulerAngles;
angles.x = Mathf.Clamp(angles.x, minRotationX, maxRotationX);
angles.y = Mathf.Clamp(angles.y, -minRotationY, maxRotationY);
angles.z = 0;
transform.eulerAngles = angles;
}
}
}