✐37.0℃ʕ̯•͡˔•̯᷅ʔ ᐝ 2021-11-16 15:15 采纳率: 80%
浏览 148
已结题

在unity中怎么使用Mathf.Clamp这个函数

我想用这个函数来限制仪表中指针的旋转角度,但是我看了官方文档还是不太清楚怎么使用,所以想问一下用这个函数怎么限制移动角度大于180度的指针。

  • 写回答

1条回答 默认 最新

  • 「已注销」 2021-11-16 16:35
    关注

    看了你之前的提问,应该是遇到了限制旋转角度的问题,unity中一些特殊的角度需要特殊处理一下把它转换为欧拉角可以允许的范围[0.360]
    以你之前的提问,限制旋转角度在-180°~88°为例:

    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Test : MonoBehaviour
    {
        //我以y坐标旋转为例
        public GameObject go; //需要控制的对象
        private float myAngle;
        float minY = -180f; //最小角度
        float maxY = 88f; //最大角度
    
        void Start()
        {
            myAngle = go.GetComponent<Transform>().localEulerAngles.y;
        }
    
        void LateUpdate()
        {
            //按下上下键进行旋转
            if(Input.GetKey(KeyCode.UpArrow))
            {
                myAngle -= Time.deltaTime * 10F;
            }
            else if(Input.GetKey(KeyCode.DownArrow))
            {
                myAngle += Time.deltaTime * 10F;
            }
    
            myAngle = MyClampAngle(myAngle, minY, maxY);
            Quaternion quaternion = Quaternion.Euler(0, myAngle, 90);
            go.GetComponent<Transform>().localRotation = quaternion;
        }
    
        /// <summary>
        /// 用于处理特殊角度
        /// </summary>
        /// <param name="angle">需要控制的角度</param> 
        /// <param name="min">最小值</param>
        /// <param name="max">最大值</param>
        /// <returns></returns>
        public float MyClampAngle(float angle, float min, float max)
        {
            if(angle < -360)
            {
                angle += 360;
            }
    
            else if(angle > 360)
            {
                angle -= 360;
            }
            return Mathf.Clamp(angle, min, max);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月16日

悬赏问题

  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败