unity 仪表盘
·
当进行工业仿真时,我们经常会制作仪表来显示数据,为了方便,我单独制作了一个仪表脚本,通过Dotween来转动仪表,通过角度来控制仪表指针的转动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
/// <summary>
/// 仪表
/// </summary>
public class Meter : MonoBehaviour
{
/// <summary>
/// 表针
/// </summary>
Transform pointer;
/// <summary>
/// 当前的偏转百分比,用于记录当前的偏转百分比
/// </summary>
private float currentRotateRate = 0;
/// <summary>
/// 初始的偏转百分比
/// </summary>
public float startRate = 0;
/// <summary>
/// 旋转持续的时间
/// </summary>
public float rotateTime = 1;
/// <summary>
/// 0刻度的角度
/// </summary>
public float zeroAngle = 90;
/// <summary>
/// 最大的角度
/// </summary>
public float maxAngle = -90;
/// <summary>
/// 0到最大值总角度
/// </summary>
private float totaleAngle = 0;
private void Awake()
{
pointer = transform.Find("Pointer");
//计算0到最大值的偏转角度
totaleAngle = Mathf.Abs(zeroAngle - maxAngle);
//重置仪表
ResetMeter();
//将自己添加进提升机的UI控制器
UITSJController.Instance.AddOneMeter(this);
}
/// <summary>
/// 更新指针的角度 rotateRate取值 0-1f
/// </summary>
public void UpdatePoint(float rotateRate)
{
float temp = zeroAngle - totaleAngle * rotateRate;
if (temp != pointer.localEulerAngles.z)
{
currentRotateRate = rotateRate;
pointer.DOLocalRotate(new Vector3(0, 0, temp), rotateTime);
}
}
/// <summary>
/// 获取当前的偏转百分比
/// </summary>
/// <returns></returns>
public float GetCurrentRate()
{
return currentRotateRate;
}
/// <summary>
/// 重置仪表盘
/// </summary>
public void ResetMeter()
{
///设置指针到初始角度
//UpdatePoint(startRate);
pointer.localEulerAngles = new Vector3(0, 0, zeroAngle);
}
}
Dotween插件下载地址:
待添加
更多推荐
所有评论(0)