Unity 仪表盘制作 自定义表盘的开始结束点 自动匹配指针位置

41 篇文章 17 订阅
订阅专栏
23 篇文章 1 订阅
订阅专栏

制作一个仪表

效果:

请添加图片描述

需求:

有几个不同的仪表盘(温湿度计,油温),区间范围不同,需要输入值显示在正确的位置上

思路:
  • 需要定义开始位置与结束位置的值,输入区间值,得到输入值在区间的百分比
  • 做三个指针,分别代表开始位置,结束位置,输入位置
  • 把得到的百分比值映射到指针上
  • 由于有时表盘上表示的密度不同(可能会越来越密集)需要添加一个额外的参数调节
  • 做好行为约束,指针位置(包括开始结束位置)不能超越范围
开始动手:
一个简单的公式就可以得到百分比:

在这里插入图片描述

 float percentage = 
 (pointerValue - startValue) / (endValue - startValue);
 //得到百分比
映射到角度上:

在这里插入图片描述

/2是算的中间位置,映射百分比应该是*百分比

百分比是0到1之前的浮点数,想要控制密度,我想到的只有是百分比相乘
至于相乘多少次,我们在外部调节
请添加图片描述

 pointerAngle.z = 
 EndAngle.z + (Mathf.Abs(EndAngle.z) + StartAngle.z) * Mathf.Pow(percentage, power);
 //转换为角度
约束:
  • 开始角度值不能一直增加,过了360或者-360就得清零,保证是正常角度,也好计算
  • 结束角度不会超过开始角度的范围
  • 指针角度在开始角度与结束角度之间
LimitAngle(ref startAngle);
if (endAngle > startAngle)
    endAngle = startAngle;
if (endAngle < startAngle - 360)
    endAngle = startAngle - 360;
if (pointerValue > endValue)
    pointerValue = endValue;
if (pointerValue < startValue)
    pointerValue = startValue;
void LimitAngle(ref float angle)
    {
        if (angle > 360)
        {
            angle -= 360;
        }
        if (angle < -360)
        {
            angle += 360;
        }
    }
其他:

其实这样就已经足够了,可以应对大部分的表盘,不过表盘有可能是右到左的样式
最后我又增加一个参数来调整是否反向
一开始我在想调整公式的计算,后来灵光一闪,直接调整百分比就行了,原理就是:1-百分比

完整代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Meter : MonoBehaviour
{
    public Transform pointer;
    public Transform startPoint;
    public Transform endPoint;
    public float startAngle = 0, endAngle = 0;
    public float pointerValue = 0;
    public float startValue = 0, endValue = 1;
    [Range(0, 10)]
    public float power = 1;
    public bool reverse = false;
    Vector3 pointerAngle;
    Vector3 StartAngle, EndAngle;
    public void UpdateMeter()
    {
        LimitAngle(ref startAngle);
        if (endAngle > startAngle)
            endAngle = startAngle;
        if (endAngle < startAngle - 360)
            endAngle = startAngle - 360;
        if (pointerValue > endValue)
            pointerValue = endValue;
        if (pointerValue < startValue)
            pointerValue = startValue;

        StartAngle = Vector3.zero;
        EndAngle = Vector3.zero;
        StartAngle.z = startAngle;
        EndAngle.z = endAngle;

        float percentage = (pointerValue - startValue) / (endValue - startValue);//得到百分比
        if (!reverse)
            percentage = 1- percentage;
        pointerAngle.z = EndAngle.z + (Mathf.Abs(EndAngle.z) + StartAngle.z) * Mathf.Pow(percentage, power);//转换为角度

        LimitAngle(pointer, ref pointerAngle);
        LimitAngle(startPoint, ref StartAngle);
        LimitAngle(endPoint, ref EndAngle);
    }
    void LimitAngle(ref float angle)
    {
        if (angle > 360)
        {
            angle -= 360;
        }
        if (angle < -360)
        {
            angle += 360;
        }
    }
    void LimitAngle(Transform target, ref Vector3 angle)
    {
        if (angle.z > 360)
        {
            angle.z -= 360;
        }
        if (angle.z < -360)
        {
            angle.z += 360;
        }
        target.localEulerAngles = angle;
    }
    private void OnValidate()
    {
        UpdateMeter();
    }
}

Demo下载连接: 点击下载

Unity3D小功能】Unity3D中实现仿真时钟、表盘、仿原神时钟
CSDN博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。
01-30 7021
Unity3D应用案例系列】时钟、钟表小组件开发。那么,今天的这个小工具跟之前的有啥区别呢?之前的时钟,是模拟真实时间时针分针秒针的旋转,比如:可以当个时钟看。
ugui unity3d 仪表盘_Unity3D---UGUI---UI创建以及Canvas设置
weixin_39744894的博客
12-21 654
1.创建场景使用快捷键以及鼠标击都可QQ截图20180127105022.png2.Image创建最简单的先创建一个Image在Hierarchy窗口里的空白处右键击>>UI>>Image (如图)Unity3D里几乎所有的东西都是在此可以创建的2.png创建完之后界面变成这样3.png至此 创建完毕3.(画布)Canvas设置Canvas菜单:Render Mode选...
Unity3D之仪表盘仪表
08-01
Unity3D之仪表盘仪表
一款功能强大的Unity数据可视化图表库
最新发布
专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。
08-03 524
今天大姚分享一款免费(基于MIT License协议)、开源、功能强大、简单易用、可配置的Unity数据可视化图表库:XCharts。
unity 仪表盘
吴梓穆的博客
09-22 1278
当进行工业仿真时,我们经常会制作仪表来显示数据,为了方便,我单独制作了一个仪表脚本,通过Dotween来转动仪表,通过角度来控制仪表指针的转动。
Unity通用仪表盘.unitypackage
08-24
自定义表针位置 输入位置正常显示 可控制的开始位置结束位置 可控制的区间范围
Unity仪表盘显示UGUI制作小心得
banbei1315的专栏
12-13 626
最近在做设备仪表参数参数显示,由于模型摆放位置经常修改,加之要求不能在模型的下面添加东西,显示界面的位置也不得不跟着修改,一来二去就烦了,想了解决办法,现在总结如下: 1、仍然在模型下面新建Panel,然后调整Panel到合适位置。 2、新建一个空的游戏对象,F2修改名字 3、将模型的Transfrom组件赋值给他。 4、将Panel拖拽到空的游戏对象下面, 5、生成预制体,提...
ugui unity3d 仪表盘_UGUI研究院之开始学习搭建界面自适应屏幕(一)
weixin_39941721的博客
12-21 173
UGUI已经beat21了。。直觉已经告诉我正式版马上就要来了。刚好今天有时间,我就抽空学习一下UGUI。以前都是搞NGUI,衷心希望UGUI的诞生可以彻底干掉NGUI(目前还不太现实)。今天主要研究的是搭建界面还有自适应屏幕相关的,这里记录下我的学习笔记欢迎大家一起讨论嘿嘿。如下图所示,我们先看Canvas,Render Mode一共有三种模式。1.Screen Space – overlay ...
C#仿真飞行仪表盘
12-26
本项目“C#仿真飞行仪表盘”就是利用C#的WinForm技术来模拟真实的飞行仪表盘,为用户提供一个可视化界面,以显示飞行中的关键参数,如俯仰角、滚动角和航向角。 首先,我们需要了解飞行仪表的基本概念。飞行仪表是...
Unity控制指针旋转到指定位置
01-01
本文实例为大家分享了Unity控制指针旋转到指定位置的具体代码,供大家参考,具体内容如下 一、搭建基础的表盘指针 二、编写控制指针旋转到指定位置的脚本: using UnityEngine; using System.Collections; ...
汽车HUD 仪表盘
07-24
总之,"HUDdemo"提供了实践汽车HUD技术的一个宝贵平台,无论是对字体镜像的处理,还是动态仪表盘指针的动画实现,都为开发者提供了一个深入学习和研究汽车抬头显示系统的机会。通过深入研究这个项目,不仅可以提升...
Unity3D_赛车小地图-仪表.倒记时功能.
10-22
3D赛车小地图-仪表.倒记时功能. 原地址:http://bbs.vrsh.cn/viewthread.php?tid=6051&extra=page%3D1%26amp%3Borderby%3Ddateline
C#做的漂亮的仪表盘
02-05
C#做的漂亮的仪表盘,拖动滚动条仪表盘自动变化,适合工业控制,医疗仪器控制的上位机软件产品开发
Unity可视化图表插件Xcharts.zip
06-17
Unity可视化图表插件,支持折线图、柱状图、饼图、雷达图、散图、热力图、仪表盘、环形图等常见图表。包含插件以及Demo各种图标案列.
unity3d之使用ugui 创建仪表盘
liugallup的专栏
05-01 4882
最近开始使用ugui制作游戏ui,在此记录下来以供大家共同学习。
ugui unity3d 仪表盘_Unity3D界面管理——无限列表(基于UGUI)
weixin_39611769的博客
12-21 273
using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;/// /// 虚拟列表/// public class VirtualList : MonoBehaviour, IScrollHandler{/// ///...
python 列表求最大值_Python递归求出列表(包括列表中的子列表)的最大值实例
weixin_39776787的博客
11-21 2242
要求:求出列表中的所有值的最大数,包括列表中带有子列表的。按照Python给出的内置函数(max)只能求出列表中的最大值,无法求出包括列表中的子列表的最大值Python3代码如下:#!/usr/bin/env python3# _*_ coding:UTF-8 _*_list_tmp = [1,3,5,7,9,11]print(max(list_tmp))返回的结果为:11按照Python3给出内...
ugui unity3d 仪表盘_Unity3D之UGUI学习笔记(一):UGUI介绍以及Canvas
weixin_39901077的博客
12-21 427
UGUI是Unity3D4.6官方提供的UI系统,支持2D和3D UI的开发。Unity3D UI史OnGUI在Unity4.6之前,官方提供的是OnGUI函数来开发UI界面,当然问题也比较多,首先不支持可视化开发,其次UI始终位于所有3D对象的上方,无法实现在UI上添加3D模型的效果。现在一般这套系统多用来在Unity编辑器中开发界面或者快速搭建一些调试界面时使用。NGUI大名鼎鼎的NGUI是可...
ugui unity3d 仪表盘_Unity3D UGUI事件处理
weixin_31650287的博客
01-13 143
IPointerEnterHandler – OnPointerEnter – Called when a pointer enters the objectIPointerExitHandler – OnPointerExit – Called when a pointer exits the objectIPointerDownHandler – OnPointerDown – Called ...
Unity Xcharts仪表盘样式DEMO开发指南
资源摘要信息:"Unity基于Xcharts的仪表盘样式DEMO" 知识: 1. Unity游戏引擎: Unity是一个跨平台的游戏开发引擎,它广泛用于开发视频游戏、模拟器以及虚拟现实环境等。Unity支持多种操作系统,包括Windows、...
写文章

热门文章

  • Unity 制作360全景视频 全景图片流程 12652
  • Unity资源替换工具,旧模型替换新模型,替换GUID,替换meta文件,文件丢失等问题 9997
  • Unity简单的摄像机控制代码,第三人称,第一人称,场景漫游 7757
  • Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 6863
  • Unity 模型切割工具,CSG,任意图案,任意切割 6613

分类专栏

  • Unity 自制工具 23篇
  • Unity 经验分享 8篇
  • Unity 大佬作品分享 9篇
  • Unity插件 41篇

最新评论

  • 如何在 Unity3D 制作一杯水 LiquidVolume插件 水杯 烧瓶液体

    2301_78391637: 请问如何改变杯子的材质呢,一运行就变成玻璃材质了

  • Unity 模拟系统提示功能,制作提示框定时消失,不同类型的提示效果

    唐沢: CSDN推广里有群号,资源在群里

  • Unity 模拟系统提示功能,制作提示框定时消失,不同类型的提示效果

    weixin_44097455: TFramework怎么写的

  • Unity 3D SplineMesh样条线工具扩展,链条制作,履带转动,绳子制作,调整弯曲度及一些好用的示例

    weixin_51306030: SplineSetLocation这个脚本不是商店资源里的吧

  • Unity 3D SplineMesh样条线工具扩展,链条制作,履带转动,绳子制作,调整弯曲度及一些好用的示例

    唐沢: 有没有可能,有些是我自己扩展的

最新文章

  • Unity做一个剪辑声音的工具 在编辑器模式实时剪辑声音
  • Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——物体占用的区域及放置点自动化
  • Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——自定义房间区域功能
2024年5篇
2023年6篇
2022年19篇
2021年11篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐沢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家重庆渝北玻璃钢仿铜雕塑玻璃钢广告雕塑南京玻璃钢花盆销售公司东丽玻璃钢花盆黑龙江户外玻璃钢雕塑多少钱亳州玻璃钢雕塑台州玻璃钢陶瓷雕塑企业安徽人物玻璃钢雕塑批发好玩的商场美陈九江玻璃钢雕塑厂家宿州环保玻璃钢雕塑优势临沂市罗庄区玻璃钢雕塑招工溧阳玻璃钢南瓜屋雕塑铜玻璃钢卡通雕塑订做阜阳校园玻璃钢雕塑价格梅州玻璃钢螃蟹雕塑旌德玻璃钢雕塑厂家仿铜玻璃钢树脂雕塑云南商场节庆美陈雕塑加工上海超市商场美陈批发价山东玻璃钢雕塑在哪有内蒙古仿铜玻璃钢雕塑生产厂家安徽户外玻璃钢雕塑上海户外商场美陈制造商场外墙灯光美陈装置商场dp景点美陈装饰文案菏泽花朵玻璃钢雕塑厂家通辽人物玻璃钢雕塑公司襄樊市玻璃钢雕塑定制玻璃钢卡通雕塑特色香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化