Unity 2D旋转不顺畅

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 2D旋转不顺畅相关的知识,希望对你有一定的参考价值。

不会在左角旋转“流畅,平滑”。左角转动但不流畅且平滑。角度之间没有角度。

没错,右边的部分。问题出在左侧。右侧的转弯是平滑的。左侧的转向角度不流畅,平滑。

观察问题: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;

        }

    }

}
答案

在这个声明中:

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;

以上是关于Unity 2D旋转不顺畅的主要内容,如果未能解决你的问题,请参考以下文章

Unity - 围绕 2D 中的点旋转对象

Unity - 2D 瞄准鼠标,同时限制最小/最大旋转并考虑父级旋转

csharp Unity C#片段用于将变换旋转到新的相对旋转数秒

iOS 旋转动画在 CAAnimationGroup 中发生不顺畅

UNITY 2D 改变旋转使按钮变大

如何使用新的 Unity4.3 2D 框架正确翻转 2D 角色? (动画期间游戏对象的旋转)