当前位置: 首页 > news >正文

Unity血条制作

一、使用UGUI制作血条

我一般使用image制作血条,当然,也可以使用滑动组件Slider。image的具体操作步骤如下

普通血条

1、在Hierarchy面板中,创建两个image组件,将其中一个设置为另外一个的子节点
在这里插入图片描述

2、在Inspector面板中,添加imag的精灵,并且将Image Type 设置为 Filled 类型。
在这里插入图片描述
选择该类型后,将Fill Method类型中,选择Horizontal 。
这样在编辑器中的操作就完成了

3、下面需要在代码中操进行控制。。获取image组件,控制它的fillAmount字段即可
在这里插入图片描述

圆形血条

使用UI进行圆形血条滚动。重复上述1、2、3操作即可。

注意: 在第2步骤中,需要将Fill Method类型中,选择Radial 360.
Fill Origin 可以控制血条起始的位置。按自己的需求更改即可。

二 使用mesh制作血条

使用mesh制作血条需要用到Shader,对mesh进行控制。完整的环形血条shader如以下代码

环形血条

·

Shader "CustomBoold/CircleShader" {Properties {_MainTex ("Base (RGB)", 2D) = "white" {}_Angle("fill", range(0, 360.0)) = 0_Color ("Tint", Color) = (1.0, 0.6, 0.6, 1.0)}SubShader {        Tags{"Queue" = "Transparent" }Pass {Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM#pragma vertex vert_img#pragma fragment frag#include "UnityCG.cginc"uniform sampler2D _MainTex;uniform float _Angle;uniform fixed4 _Color;float4 frag(v2f_img i) : COLOR {	float4 result = tex2D(_MainTex, i.uv);float angle = degrees(atan2(i.uv.x-0.5 , i.uv.y-0.5));if(angle > _Angle-180){				result.a = 0;}return result*_Color;  }ENDCG}}
}

1、将上述的shader代码,在项目中创建,并且创建对应的材质球。将刚刚创建的shader文件拖动到材质球上
2、将材质球,添加到预制体的血条上,展开shader后,可观察到有一段可拖动的滑动条。
在这里插入图片描述

3、在代码中获取此物体的材质mat,

game.GetComponentInChildren<SpriteRenderer>().material
mat.SetFloat("_Angle", 血量比值);

普通血条

使用mesh的矩形血条。具体shader只需要修改一处代码即可。将上述的环形shader代码中的frag函数,修改为之下的即可。

float4 frag(v2f_img i) : COLOR {	float4 result = tex2D(_MainTex, i.uv);if(i.uv.x > _Angle){				result.a = 0;}return result*_Color;  }

1、将上述的shader代码,在项目中创建,并且创建对应的材质球。将刚刚创建的shader文件拖动到材质球上

2、在代码中获取此物体的材质mat,

game.GetComponentInChildren<SpriteRenderer>().material
mat.SetFloat("_Angle", 血量比值);
http://www.lryc.cn/news/143269.html

相关文章:

  • vue,uniapp生成二维码
  • 分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测
  • STM32启动模式详解
  • go语言中的切片
  • HTML-常见标签、HTML5新特性
  • 微信有自己的“知乎”,微信问一问来了!
  • [MyBatis系列③]动态SQL
  • 开始MySQL之路—— DDL语法、DML语法、DQL语法基本操作详解
  • Java“牵手”天猫整店商品API接口数据,通过店铺ID获取整店商品详情数据,天猫店铺所有商品API申请指南
  • 用AI重构的钉钉,“钱”路在何方?
  • 批量根据excel数据绘制柱状图
  • 浅谈 Java 中的 Lambda 表达式
  • 闭包的概念
  • openGauss学习笔记-52 openGauss 高级特性-LLVM
  • MySQL 8.0字符集校正
  • 软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化
  • Unbutu系统-Docker安装、JDK环境配置,Docker常用指令、Docker安装MySQL、Redis、Tomcat、Nginx,前端后分离项目部署
  • Python绘图系统10:在父组件中使用子组件的函数
  • 【Linux的成长史】Linux的发展史
  • OLED透明屏是什么?什么叫做OLED透明屏的原屏?
  • Redis 持久化的手段有哪些 ?RDB 和 AOF 有什么区别 ?
  • 【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容
  • 华纳云:ubuntu下nginx服务器如何配置
  • PTP时间同步例程
  • 【ES6】ES6遍历属性的方法
  • 【Web系列二十四】使用JPA简化持久层接口开发
  • Flink流批一体计算(16):PyFlink DataStream API
  • 软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计
  • 山西电力市场日前价格预测【2023-08-29】
  • 计算机毕设 基于深度学习的人脸专注度检测计算系统 - opencv python cnn