Unity3d Quaternion角度限制

128 篇文章 1 订阅
64 篇文章 1 订阅
  1. Quaternion qa;
  2.     public void RotateQ(){
  3.         var v = Input.GetAxis ("Mouse X");
  4.         var h = Input.GetAxis ("Mouse Y");
  5.         qa *= Quaternion.Euler (h,v,0);
  6.         qa = ClampX (qa,-30f,30f);
  7.         qa = ClampY (qa,-30f,30f);
  8.         this.transform.localRotation = qa;
  9.         //限定不让Z轴旋转
  10.         transform.eulerAngles = Vector3.right * transform.eulerAngles.x + Vector3.up * transform.eulerAngles.y + Vector3.forward * 0f;
  11.     }
  12.     /// <summary>
  13.     /// 限定X轴旋转角度
  14.     /// </summary>
  15.     /// <returns>The x.</returns>
  16.     /// <param name="q">Q.</param>
  17.     /// <param name="min">Minimum.</param>
  18.     /// <param name="max">Max.</param>
  19.     Quaternion ClampX(Quaternion q,float min,float max){
  20.         q.x /= q.w;
  21.         q.y /= q.w;
  22.         q.z /= q.w;
  23.         q.w = 1.0f;
  24.         float angleX = 2.0 * Mathf.Rad2Deg * Mathf.Atan (q.x);
  25.         angleX = Mathf.Clamp (angleX,min,max);
  26.         q.x = Mathf.Tan (0.5f*Mathf.Deg2Rad*angleX);
  27.         return q;
  28.     }
  29.     /// <summary>
  30.     /// 限定Y轴旋转角度
  31.     /// </summary>
  32.     /// <returns>The x.</returns>
  33.     /// <param name="q">Q.</param>
  34.     /// <param name="min">Minimum.</param>
  35.     /// <param name="max">Max.</param>
  36.     Quaternion ClampX(Quaternion q,float min,float max){
  37.         q.x /= q.w;
  38.         q.y /= q.w;
  39.         q.z /= q.w;
  40.         q.w = 1.0f;
  41.         float angleY = 2.0 * Mathf.Rad2Deg * Mathf.Atan (q.y);
  42.         angleY = Mathf.Clamp (angleY,min,max);
  43.         q.y = Mathf.Tan (0.5f*Mathf.Deg2Rad*angleY);
  44.         return q;
  45.     }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值