天天看点

u3d协程控制匀速旋转角度

u3d协程控制匀速旋转角度

点击红色圈后,实现选中plane旋转至人物正前方

u3d协程控制匀速旋转角度
float AngleGet(Vector3 from, Vector3 to)
    {
        Vector3 v3 = Vector3.Cross(from, to);
        if (v3.y > 0)
            return Vector3.Angle(from, to);
        else
            return 360 - Vector3.Angle(from, to);
    }      
IEnumerator StartTransRotateLerp(Transform trans, float angle)
    {
        if (angle > 180)
        {
            angle = 360 - angle;
            angle = -angle;
        }
        int i = 0;
        float cnt = Mathf.Abs(angle) / 180.0f * 60.0f;
        float clip = angle / cnt;
        while( i < (int)cnt)
        {
            gameObject.transform.Rotate(new Vector3(0, clip, 0));
            i++;
            yield return new WaitForEndOfFrame();
        }
        trans.GetComponent<XinjianIntroPlane>().m_text.SetActive(true);
    }