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

【Godot 3.5控件】用TextureProgress制作血条

说明

本文写自2022年11月13日-14日,内容基于Godot3.5。后续可能会进行向4.2版本的转化。

概述

之前基于ProgressBar创建过血条组件。它主要是基于修改StyleBoxFlat,好处是它几乎可以算是矢量的,体积小,所有东西都是样式信息,没有图片什么事儿。

在这里插入图片描述

但是就像之前说过的,它太过局限,无法实现复杂的需求。

使用TextureProgress制作复杂血条

TextureProgress的好处是它是基于图片的,通过创建三张图片,你就可以做出一个血条。

在这里插入图片描述

  • under(下面):提供背景
  • progress(进度):提供进度条自身的图片
  • over(上面):提供边框

以上面示意图所显示的为例,其实我们需要创建如下图左的三张图片,三者结合,组成一个血条的样子(图右):

在这里插入图片描述

上面的血条如果想一格一格显示,那么可以如下设置:max=8min=0,step=1,这样就不会出现半格的现象了。

但是实际中无论是星际还是相似的游戏,采用这种血条的都不是标准的一格一格的掉血。
image.png
甚至有变体是每一个格子像是一格单独的血条,会根据血量变颜色,而其他格子的血条颜色不变。

关于圆角

两侧的带圆角或一侧带圆角都是没有问题的。只要是三者的尺寸相一致就可以。你可以给progress做一些高光之类的修饰。
带圆角的血条素材
但是Godot的TextureProgress存在的问题是,它的切面只能是规整的。
TextureProgress只能给予直线切面

关于异形

TextureProgress做异形的血条也是没问题的。但是有点漏色,只可远观。
异形血条的效果
TextureProgressProgressBar以及Slider控件都集成自Range类型,Range提供了minmaxstepvalue,实现一个范围内的值改变。

image.png
image.png
可以看到,其实,TextureProgress实现的主要是通过range来按比例(value/max)裁切和显示progress所提供的图片。

圆形

除了长条形,也可以用圆形制作一些特殊效果的进度条。

圆形素材
以下是在圆形图片素材时,通过设置不同的fill_mode可以或得的效果:

  • FILL_LEFT_TO_RIGHT (自左向右)【默认】

image.png

  • FILL_RIGHT_TO_LEFT(自右向左)

image.png

  • FILL_TOP_TO_BOTTOM(自上向下)

image.png

  • FILL_BOTTOM_TO_TOP(自下而上)

image.png

  • FILL_CLOCKWISE(径向,顺时针)

image.png

  • FILL_COUNTER_CLOCKWISE(径向,逆时针)

image.png - FILL_BILINEAR_LEFT_AND_RIGHT(由中间往两侧)

image.png - FILL_BILINEAR_TOP_AND_BOTTOM(由中间向上下)

image.png - FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE(径向,同时向顺时针和逆时针)

image.png

圆形美化的例子

加了一些剪切蒙版。
在这里插入图片描述

说实话暗色的那个图片素材是多余的,应该用颜色调制实现。

圆环

其实看到圆形部分的例子,几乎就能想到圆环的做法了,当然还是去看了一下Hi小胡的圆环进度条实例,跟我能想到的差不多,而且他做的真的很不错,用了自带的色彩调制以及径向模式下的偏移,还做了动画。
我们先抛开Hi小胡的思路,而是看我们自己首先会想到如何实现圆环。
最简单的就是只有一个progress,而且它本身就是我们想要的色彩,这样我们就获得了一个么有背景的圆环。
在这里插入图片描述

进阶一下的话可以设定一个背景:
在这里插入图片描述

再进一步加个边线:
在这里插入图片描述

当然还有一个组合就是值有progressover没有under

好了再说回Hi小胡是怎么做的,以及巧妙之处。

他只在PS里画了一个圆环,但是颜色设为了纯白色,然后在Godot中将progressunder都设为了这个白色的圆环图案。
在这里插入图片描述

接下来骚操作来了,给tint分组下的tint_undertint_progress各设定一个颜色。

image.png
然后设定一个不是max的中间值value,圆环的效果就出来了。

image.png
这到底是为什么呢?

属性值类型默认值描述
tint_underColorColor(1,1,1,1)将设定的颜色与TextureProgress的texture_under纹理的颜色相乘
tint_overColorColor(1,1,1,1)将设定的颜色与TextureProgress的texture_over纹理的颜色相乘
tint_progressColorColor(1,1,1,1)将设定的颜色与TextureProgress的texture_progress纹理的颜色相乘

颜色相乘,虽然没有学过,但是将RGBA色彩当做是有四个分量的向量,那么就明白了。

Color(1,1,1,1)就是纯白色,完全不透明,它乘以任何颜色值就等于这个颜色值本身。所以Hi小胡使用纯白色绘制圆环的妙处就在此。用一个白色圆环,经过调色,就可以获得完全不同的颜色,甚至是可编程的。

image.png
学到“白色”的妙处之后,我们可以举一反三,制作素材的时候就可以省下至少一张图片了,因为under和progress都可以用白色进行调制。

举一反三:根据剩余血量变化血条颜色

在这里插入图片描述

根据剩余血量改变血条颜色是一个非常常见的设计策略,通过“白色”的妙用,我们完全可以100%的实现这一设计,代码也就是几行if的问题。

径向的初始角度和最大填充角度

image.png
radial_initial_angle类似于给默认的起始点也就是0度位置进行了一个角度的偏移,默认起始角度0°相当于表盘上的十二点钟方向,同时默认最大填充角度radial_fill_degrees为360°,相当于转一圈后回到了0°。
在这里插入图片描述

radial_fill_degrees如果设为360以外的数值,就代表一圈不再是360度,而是其他数值。
在这里插入图片描述

radial_center_offset就按字面意思就是对圆或圆环的圆心进行一定二维向量的平面偏移。

更好看的样式

下面是一些参考图,可以自己试着实现一下,应该都是类似的思路。
在这里插入图片描述
在这里插入图片描述

矩形和圆角矩形

在技能按钮组件制作时,借用了Hi小胡的想法,就是使用“矩形 +径向,逆时针“,有些游戏里也会存在使用“矩形+上到下/下到上”的组合,比如植物大战僵尸植物的卡牌就是“矩形+自下而上“。
在这里插入图片描述

技能按钮的:矩形 +径向,逆时针(图左),植物大战僵尸植物卡牌的:矩形+自下而上
所以知识不就串起来了嘛~

ProgressBarTextureProgress,不仅仅是制作一些加载进度和血条,任何带过程的东西都可以用它们来制作和表示。
发挥你的想象力吧。

参考Hi小胡的这个例子:
【Godot】实现三种角色血量显示方式_哔哩哔哩_bilibili
image.png
因为TextureProgress对process的图片是采取裁切形式,所以我们只需要将max值设为代表学血量的心的2倍,步幅(step)为1,最小值min为0,就可以实现如下的效果:
min=0,max=10时value所对应的血量情况

min=0,max=5,step=1

image.png
如果max设为5,min设为0,step设为1,则情况就只剩下5种了。
image.png
此时如果step设为0.5,则又出现10种情况,如果是0.25呢?就有了20种情况,所以这种操控的可能性是非常多的。
在Godot中还是多少有点漏色。
image.png
比Hi小胡的省力气一些。当然也不是说他的实现没有好处。

相关文章:

【Godot 3.5控件】用TextureProgress制作血条

说明 本文写自2022年11月13日-14日,内容基于Godot3.5。后续可能会进行向4.2版本的转化。 概述 之前基于ProgressBar创建过血条组件。它主要是基于修改StyleBoxFlat,好处是它几乎可以算是矢量的,体积小,所有东西都是样式信息&am…...

第十届蓝桥杯大赛个人赛省赛(软件类)真题- CC++ 研究生组

第十届蓝桥杯大赛个人赛省赛(软件类)真题- C&C 研究生组-立方和 第十届蓝桥杯大赛个人赛省赛(软件类)真题- C&C 研究生组-字串数字 第十届蓝桥杯大赛个人赛省赛(软件类)真题- C&C 研究生组-质数…...

Linux:Gitlab:16.9.2 创建用户及项目仓库基础操作(2)

我在上一章介绍了基本的搭建以及邮箱配置 Linux:Gitlab:16.9.2 (rpm包) 部署及基础操作(1)-CSDN博客https://blog.csdn.net/w14768855/article/details/136821311?spm1001.2014.3001.5501 本章介绍一下用户的创建,组内设置用户&…...

【数据挖掘】实验5:数据预处理(1)

实验5:数据预处理(1) 一:实验目的与要求 1:熟悉和掌握数据预处理,学习数据清洗、数据集成、数据变换、数据规约、R语言中主要数据预处理函数。 二:实验内容 【缺失值分析】 第一步&#xff1…...

383.赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 思路:将magazine 中字…...

Python 3 教程(8)

heisenbug601 601***902@qq.com 参考地址 311 tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: 代码如下: >>> classmates = (Michael, Bob, Tracy) 现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法…...

Mysql数据库深入理解

目录 一、什么是数据库 二、Mysql基本架构图 1.Mysql客户端/服务器架构 2.客户端与服务器的连接过程 3.服务器处理客户端请求 4.一条查询SQL执行顺序 4.1连接器 4.2查询缓存 4.3解析器 4.4执行器 4.4.1预处理阶段 4.4.2优化阶段 4.4.3执行阶段 5.一条记录如何存…...

android 音频焦点,音频策略梳理

音频焦点和音频策略两个不同的概念,容易搞混 先来看下音频焦点和音频策略直接的区别和联系 音频策略的主要功能是为该音频找到合适的硬件设备播放 1 音频策略流程: (从usage->device) attributesBuilder.setUsage--->audioservice.mCarAudioCont…...

go语言-基础元素与结构的使用

go基础元素与结构的使用,快速上手 编译go文件 编译为可执行文件 go build 文件名.go运行文件 ./文件名输入/输出 引用fmt库(关于输入输出的库) 输入 scanf按照给定的格式依次读取数据(包括非法数据),不…...

【leetcode热题】 二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出: []解法一 题…...

康奋威科技邀您到场参观2024长三角快递物流展

参展企业介绍 杭州康奋威科技股份有限公司创立于2005年,由国家“万人计划”专家任天挺先生创立并担任法人,是一家专业从事智能装备研发与制造的国家级高新技术企业。专注于自动化控制、机械设计、信息化方面的技术研究,主要为太阳能光伏、智…...

linux centos 安装jenkins,并构建spring boot项目

首先安装jenkins,使用war包安装,比较简单,注意看下载的版本需要的JDK版本,官网下载https://www.jenkins.io/download/ 把下载好的war包放到服务器上,然后运行,注意8080端口的放行 # 前台运行并指定端口 ja…...

是德科技keysight DSOX3024T示波器

181/2461/8938产品概述: DSOX3024T 示波器 要特性与技术指标 使用电容触摸屏进行简洁的触控操作: •提高调试效率 •触控设计可以简化文档记录 •使用起来就像您喜欢的智能手机或平板电脑一样简单 使用 MegaZoom IV 技术揭示偶发异常: •超快…...

C#获取HTML源码

C#获取HTML源码 2024年03月23日记录 以前的那个从网上找到的方法, 在一些网站上用不了,如17K,取出来的是乱码,要么就是一坨JS,好像是用JS又重新加载了什么的 using System; using System.Collections.Generic; using System.We…...

element-ui checkbox 组件源码分享

简单分享 checkbox 组件,主要从以下三个方面来分享: 1、组件的页面结构 2、组件的属性 3、组件的方法 一、组件的页面结构 二、组件的属性 2.1 value / v-model 属性,绑定的值,类型 string / number / boolean,无…...

JavaEE--小Demo--数据库建立

目录 实验准备 本次所要新建的文件 实验步骤 step1-demo.sql 1.在resources文件夹下新建demo.sql文件 2.打开此目录,并运行命令提示符 3.打开数据库mysql -uroot -p 4.创建数据库create database demo; 5.使用数据库use demo; 6.导入数据source demo.sql;…...

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记19_前方的路

1. 技术与财富分配不均 1.1. 当前的财富分配不均早已成为世界难题 1.1.1. 世界上有一半的人口——相当于35亿人——拥有的财富却不敌在一辆双层巴士上的商业精英的个人财富总和 1.2. 部分线上市场仍受到竞争机制支配的事实并不能为其他市场的反竞争策略开脱 1.3. 企业的市场…...

MySQL双一参数性能测试

MySQL双一参数 MySQL 数据库中有两个非常重要的参数,一个是innodb_flush_log_at_trx_commit,另外一个是sync_binlog,这两个参数称之为双一参数,前者控制了redo log 的刷盘机制,后者控制了binlog 的刷盘机制 这两个参…...

CodeSys创建自定义的html5控件

文章目录 背景创建html5control.xml文件控件界面以及逻辑的实现使用的资源安装自定义的html5控件库 背景 查看官方的资料:https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_html5_dev.html 官方的例子:https://forge.codesys.com/…...

Xcode15报错: SDK does not contain ‘libarclite‘

pod lib lint *** 报错 clang: error: SDK does not contain libarclite at the path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a; try increasing the minimum deployment target 或者xcode…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...