Зажим LookAtMouse Z Вращение - PullRequest
0 голосов
/ 12 марта 2019

У меня есть объект, который смотрит на положение мыши, но у него нет ограничений.Например, если вращение объекта больше 40 или меньше -40, то оно не вращается.

public class GunController : MonoBehaviour
{
    public float maxTop, minBottom;
    void Update()
    {
        var pos = Camera.main.WorldToScreenPoint(transform.position);
        var dir = Input.mousePosition - pos;
        var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
    }
}

1 Ответ

0 голосов
/ 12 марта 2019

Это небольшая функция, которую я использую, чтобы зафиксировать вращение при вращении вверх / вниз по FPS.

Вы можете изменить его для своего использования.

Quaternion ClampRotationAroundXAxis(Quaternion q)
{
    q.x /= q.w;
    q.y /= q.w;
    q.z /= q.w;
    q.w = 1.0f;

    float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan(q.x);

    angleX = Mathf.Clamp(angleX, -90f, 90f);

    q.x = Mathf.Tan(0.5f * Mathf.Deg2Rad * angleX);

    return q;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...