我想用这个函数来限制仪表中指针的旋转角度,但是我看了官方文档还是不太清楚怎么使用,所以想问一下用这个函数怎么限制移动角度大于180度的指针。
看了你之前的提问,应该是遇到了限制旋转角度的问题,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);
}
}