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

(197评价)
价格: 4431.00元
关于限制旋转角度的小问题
UpMg发起了问答2017-09-13
2
回复
2798
浏览

请问下我想控制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条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!