美文网首页
2020-04-01 UNITY平滑旋转一定角度

2020-04-01 UNITY平滑旋转一定角度

作者: Nmao | 来源:发表于2020-04-01 15:28 被阅读0次
    private float origionY;                //声明初始的Y轴旋转值
    private Quaternion targetRotation;    //声明旋转目标角度
    public float RotateAngle = 60;       //定义每次旋转的角度
    private int count;                  //声明一个量记录到目标角度需要进行旋转RotateAngle度的个数
    // 由于每次旋转转  60(RotateAngle)度,所以从(0,0,0)到(0,120,0)需要旋转两个 60(RotateAngle) 度
    
    
    
    
    private void Start()
    { 
        origionY = transform.rotation.y;    //获取当前Y轴旋转值赋给origionY
    }
    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.D))  //按下赋值
        {
            count++;                                     //当按下D键记录将count+1,一次转60,再按一次就应该从初始的Y变为Y+120,所以每按一次count+1
            targetRotation = Quaternion.Euler(0, RotateAngle * count + origionY, 0) * Quaternion.identity;  //给旋转目标值赋值,由于只有Y轴动,所以目标值应是  (旋转角(RotateAngle)*需要旋转的个数(count)+origionY(物体初始Y轴旋转角))*Quarternion.identity(四元数的初始值,记住写就行!)
        }
    
        else  //当不按下就进行旋转
        {
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 2);//利用Slerp插值让物体进行旋转  2是旋转速度 越大旋转越快
    
            if (Quaternion.Angle(targetRotation, transform.rotation) < 1)
            {
                transform.rotation = targetRotation;                        //当物体当前角度与目标角度差值小于1度直接将目标角度赋予物体 让旋转角度精确到我们想要的度数
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:2020-04-01 UNITY平滑旋转一定角度

          本文链接:https://www.haomeiwen.com/subject/vflauhtx.html