Unity 2D вращение не плавное - PullRequest
0 голосов
/ 26 апреля 2019

Не вращается "жидкость, гладкая" в левом углу. Левый угол поворачивается, но не плавный и плавный. Нет углов между углами .

Нет проблем в правой части. Проблема на левой стороне. Повороты на правой стороне плавные. Углы поворота на левой стороне не жидкость, гладкая .

Наблюдайте за проблемой: https://youtu.be/kuBWoF5r2Bs

Gun Sprite C # Код:

 public GameObject projectile;

    public Camera cam;

    void FixedUpdate()
    {
        //rotation
        Vector3 mousePos = Input.mousePosition;
        Vector3 objectPos = cam.WorldToScreenPoint(transform.position);

        mousePos.x = mousePos.x - objectPos.x;
        mousePos.y = mousePos.y - objectPos.y;

        float angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
        //transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle)); //Rotating!

        if (angle > 0f && angle < 100f || angle < 0f && angle > -90f)
        {

            //Reverse
            Vector3 theScale = transform.localScale;
            theScale.x = 1;
            transform.localScale = theScale;

            //Limit
            angle = Mathf.Clamp(angle, -24, 24);
            Quaternion target = Quaternion.Euler(new Vector3(0, 0, angle));
            transform.rotation = target;

        }

        if (angle > 100f && angle < 180f || angle < -90f && angle > -180f)
        {

            //Reverse
            Vector3 theScale = transform.localScale;
            theScale.x = -1;
            transform.localScale = theScale;

            //Limit
            angle = Mathf.Clamp(-angle, -24, 24);
            Quaternion target = Quaternion.Euler(new Vector3(0, 0, angle));
            transform.rotation = target;

        }

    }

}

1 Ответ

0 голосов
/ 28 апреля 2019

В этом утверждении:

if (angle > 100f && angle < 180f || angle < -90f && angle > -180f)

Единственными углами, которые пропускают утверждение, являются те, которые либо больше 100, либо меньше -90.Все числа в первом диапазоне больше 25, а все числа во втором диапазоне меньше -25 .... поэтому значение всегда будет либо 25, либо -25.

Во втором утверждении попробуйте добавить или вычесть что-то из угла, пока не получите значение в пределах желаемого диапазона.Может быть, что-то вроде этого:

if (angle > 100) angle -= 100;
if (angle < -90) angle += 90;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...