Unity逻辑代码开发介绍_摄像机平滑旋转并限定角度四元数方式

开发FPS的游戏时,涉及的相机的平滑旋转,下面是我采用四元数的方式,并且限定旋转上下限:

 

public float XSensitivity = 2f;

public int MinimumX = -30;  

public int MaximumX = 30;

private Quaternion m_CameraTargetRot;

void Update()

{

            float xRot = Input.GetAxis("Mouse Y") * YSensitivity;  //获取鼠标旋转
            m_CameraTargetRot *= Quaternion.Euler(-xRot, 0f, 0f);

            m_CameraTargetRot = ClampRotationAroundXAxis(m_CameraTargetRot);  //限定角度范围

            camera.localRotation = Quaternion.Slerp(camera.localRotation, m_CameraTargetRot,
                    smoothTime * Time.deltaTime); // 摄像机平滑插值

}

 private 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, MinimumX, MaximumX);
            q.x = Mathf.Tan(0.5f * Mathf.Deg2Rad * angleX);

            return q;
        }

 

如有错误,大家可以一起交流

 联系方式 qq: 940299880

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值