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

Godot ------ 初级人物血条制作01

Godot ------ 初级人物血条制作

  • 引言
  • 正文

引言

在游戏开发中,尤其是 Roguelike 类型的游戏中,人物的血条往往非常重要,本文我们将简单介绍如何使用 Godot 来制作人物血条。

正文

在场景界面中选择添加其他节点。
在这里插入图片描述
在弹出的窗口中选中 ProgressBar 并点击创建。
在这里插入图片描述
创建完成后回到场景窗口,我们将场景名称从默认的 ProgressBar 改为 BloodStrip。
在这里插入图片描述
此时,我们在 2D 显示窗口看到的是一个非常窄的对象,这是因为我们创建的 BloodStrip 对象使用的是默认的尺寸。
在这里插入图片描述
接下来,我们需要在检查器窗口中的 Control 标签页下选择 Layout->Transform,在展开的下拉窗口下更改 Size 值,比如,这里我们将 x 值更改为 100,将 y 值更改为 30。此时,如下图所示,可以看到,对应的窗口尺寸改变了。
在这里插入图片描述
下一步,我们想要为我们的血条添加背景颜色以及前景色,此时,我们可以通过检查器窗口下的 Control 标签页下的 Theme overrides->styles->Background 中选择 StyleBoxFlat。
在这里插入图片描述
然后在 BG Color 中选择想要使用的背景色。这里为了增加对比度,我们将其选择为纯黑色(RGB 值为 (0, 0, 0))。因为血条通常的边框是带有一定弯曲,我们可以在 Theme overrides->styles->Background->Corner Radius 中将 Top Left, Top Right, Bottom Right, Bottom Left 设置为 8 px。同时,我们也可以将血条的边框进行突出,可以将 Theme overrides->styles->Background->Border Width 选项下的 Left, Top, Right, Bottom 设置为 2 px。此时,2D 显示窗口中血条图像变为:
在这里插入图片描述
接着,我们需要将 Theme overrides->styles-> Fill 也设置为 StyleBoxFlat。然后将颜色设置为红色,RGB 值为 (255, 0, 0)。
在这里插入图片描述
设置完成后,我们回到 2D 显示窗口查看,结果与设置前一样。如下图所示。
在这里插入图片描述
这是因为此时,我们设置的是填充颜色,而此时,默认的填充值为 0,也就是说此时人物的血量为 0,当然不会有任何填充显示。为了能够正常显示我们设置的颜色,我们需要在检查器窗口下的 Range 标签页中设置 Min Value, Max Value,Step 以及 Value 值。通常人物的血条有两种设置方式,如下:

# 方式 1
Min Value = 0.0
Max Value = 100.0
Step = 1.0
Value = 可以为任意值(血条显示的当前值)# 方式 2
Min Value = 0.0
Max Value = 1.0
Step = 0.01
Value = 任意值(血条显示的当前值)

设置完成后我们可以看到 2D 显示结果如下:
在这里插入图片描述
显然,显示和我们的预期不太一致,这是因为,我们没有在 Theme overrides->styles->Fill 下设置 Border Width 以及 Corner Radius,我们需要对这些设置进行设置,使得它们与 Theme overrides->styles->Background 下的设置保持一致。设置完成后 2D 显示界面中的效果如下:
在这里插入图片描述
此时,左侧部分显示正常,但是右侧部分由于有边框的存在,显示是异常的,这是因为边框的颜色与血条的背景色不一致造成的,解决这一问题,最简单的方法就是将边框颜色设置为与血条背景色一致,比如,这里我们可以将边框的颜色设置为黑色。
在这里插入图片描述
当然我们也可以更改背景色使其与 Border 颜色一致。
在这里插入图片描述
至此,我们完成了血条的创建。

然而在实际的游戏中:

  1. 血条的值肯定是动态变化的。
  2. 通常血条的初始值应该是 100%,而且血量的显示应该是一个实际的数字而不是百分比。
  3. 在某些情况下,血条需要继承之前的状态,从而其初始数值也不一定是满的。

因此,接下来我们要做的就是使用 GDScript 来实现这两个功能。在下一篇文章中我们会集中介绍如何使用脚本来实现这一设计。

如果大家觉得有用,就请点个赞吧~

http://www.dtcms.com/a/317896.html

相关文章:

  • linux-系统性能监控
  • 如何测试一个机器是大端还是小端
  • cocos Uncaught TypeError: Cannot read properties of null (reading ‘SetActive‘)
  • 达梦数据库日常运维命令
  • Node.js从入门到精通完整指南
  • 查看ubuntu server 的基本信息
  • 【DeepID】《Deep Learning Face Representation from Predicting 10,000 Classes》
  • 项目中使用的设计模式
  • GPT-OSS 与 Ollama 完整安装使用教程
  • 如何自动生成 API 接口文档 - 一份详细指南
  • 强强联合:OpenAI正式登陆AWS!
  • 基于AI的自动驾驶汽车(AI-AV)网络安全威胁缓解框架
  • Windows 如何上架 iOS 应用?签名上传全流程 + 工具推荐
  • 跨过BI,企业能直接用AI实现数据分析吗?
  • Template 显式实例化 隐式实例化
  • Ethereum: 用Python链上查询 Uniswap V3 ETH/USDC 资金池资产
  • 云手机的应用场景较为广泛,主要包括以下几个方面:
  • C++ - 仿 RabbitMQ 实现消息队列--服务器模块实现
  • NAT转化
  • 单变量单步时序预测:CNN-BiGRU卷积神经网络结合双向门控循环单元
  • 从 “认知优势” 到现实赋能:DPVR AI Glasses 重构智能穿戴价值
  • 飞算JavaAI开发平台:重构开发全流程——从需求到工程的智能化跃迁
  • coze1-podman容器化部署coze
  • Kafka-exporter采集参数调整方案
  • npm scripts 使用指南
  • 快手AI团队开源 KAT (Kwaipilot-AutoThink) 思考模型
  • 【ROS1】13-元功能包
  • electron:vue3+vite打包案例
  • 从零搭建React框架--第一章:create-react-app、antd、less
  • LAS平台Vibe Data Processing:AI驱动的数据处理新范式