Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

关于限制旋转角度的小问题
UpMg发起了问答2017-09-13
2
回复
3083
浏览

请问下我想控制Plane的旋转角度限制,比如我在代码中if中做了5°到-5°的限制(网上看到的方法),但最后发现如果某一时刻超过了5°,代码的if判断就不执行了, 然后Plane就不会动了,想问下用什么方法做限制才能在限制角度内来回转动呢

 

所有回复
  • sdhexu • 2017-09-13

    方法1:

    先保存一下未旋转之前的rotation,然后进行旋转,然后判断旋转后的角度如果大于5,则恢复未转之前的rotation.

    方法2:

    事先计算并保存好旋转到极限时的最大rotation和最小的rotation,然后使用Quaternion.Lerp(最小,最大, 进度值)来获取线性插值。进度值如果为0,则返回最小的rotation,如果为1,则返回最大的。控制进度值在0-1之间,就可以得到最小到最大之间任意的角度。

    • UpMg • 2017-09-14

      float h = Input.GetAxis("Horizontal");
      float v = Input.GetAxis("Vertical");

      Quaternion oldRotate = transform.rotation;

      transform.Rotate(Vector3.right * -h * speed * Time.deltaTime);
      transform.Rotate(Vector3.forward * -v * speed * Time.deltaTime);

      if ((transform.localEulerAngles.x >= 8.0f && transform.localEulerAngles.x <= 353.0f)||
      (transform.localEulerAngles.z >= 8.0f && transform.localEulerAngles.z <= 345.0f))
      {
      transform.rotation = oldRotate;
      可以了 谢谢啊 第一种方法倒是懂,第二种方法倒没见过不知道具体怎么用

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!