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

godot2D游戏教程系列二(17)

前言:

  • 我是根据b站上的视频进行学习,并且总结写下笔记,然后做此分享。笔记非常详细以至于你可以通过查看文章进行快速学习并且制作出游戏出来。当然视频学习的链接我也放在下面了:
  • 视频学习:https://www.bilibili.com/video/BV1Nd25BNEA6?spm_id_from=333.788.player.switch&vd_source=078d5d025b9cb472d70d8fda1a7dc5a6&p=15
  • 音频/美术资源包下载: https://pan.baidu.com/s/1mY05SbG3XFUpn-qiKxDRhw?pwd=b6bg

完成目标:

成功实现“状态切换功能”,并用UI实时显示当前状态进行调试。


一、实现状态切换逻辑

切换流程:

  1. 传入目标状态名称
  2. 通过名称获取对应子节点
  3. 判断是否获取成功
  4. 调用当前状态的Exit()
  5. currentState赋值为新状态
  6. 调用新状态的Enter()

效果:

状态可以安全、完整地进行切换。


二、添加调试UI

  • 给 Player 添加Label节点
  • 设置z_index = 100(保证显示在最上层)
  • 调整缩放大小
  • 移动到角色旁边
  • 重命名为DebugLabel

作用:

用于显示当前状态名称。


三、让状态显示在UI上

  • 在状态机脚本中引用DebugLabel
  • 在状态脚本的更新函数中修改Label.text

效果:

状态变化时,文字同步变化。


四、测试状态切换

  • 添加临时代码:按下空格切换到 Run
  • 修正函数名错误(必须使用_process
  • 运行游戏测试成功

最后删除测试代码。


最终效果

  • 状态可以通过函数正确切换
  • 每次切换都会:
  • 退出旧状态
  • 进入新状态
  • UI 实时显示当前状态

状态机从“框架”升级为“可运行、可调试”的完整系统。

实现过程:

  • 先进行传入参数目标状态的名称进行切换,然后获取这个节点,另外进行判断这个节点是否获取到了,获取到了之后进行退出当前状态进行清理,然后将当前状态赋值为新的状态,然后进入这个新的状态

  • 做godot系统的ui系统,我们右键点击玩家节点,给它添加一个新的节点,是标签节点就是文本节点

  • 然后我们将这个UI进行置顶,设置z-index为100,这样子文字就会显示在游戏所有元素的上方

  • 我们点击右侧检测器的layout里面的transform里面的scale缩放属性进行调整这个文字的缩放大小

  • 然后我们将文字移动到角色的旁边之后启动一下游戏,在游戏中就可以看到我们的这个文字显示了

  • 然后我们重命名一下这个标签节点,这个节点重命名为DebugLabel

  • 然后回到我们状态机脚本,按住Ctrl键将调试标签拖入脚本中

  • 然后我们切换到状态脚本中,在更新函数中我们进行修改标签节点的文本

  • 然后我们添加一些代码,让玩家按下空格就可以切换到奔跑状态,另外这里笔者有一个小问题失误就是这个函数名字敲错了,应该是_process而不是_physics,这里需要进行修改

  • 然后当我们启动游戏,就可以发现我们的调试标签名字根据我们按下空格键进行变动了

  • 然后就将我们的切换函数测试完成了,就可以把那个根据按下空格键将其变化的代码给删掉
http://www.jsqmd.com/news/495018/

相关文章:

  • Spring AI Alibaba StateGraph 多智能体编排(配图生成)
  • 《掌控习惯》书摘
  • CD4抗体如何解码免疫调控?
  • 如何在 JavaScript 中使用 var、let、const 声明变量?
  • 人工智能之数学基础:梯度
  • MySQL分库分表的实现(五)--公共表处理
  • 百度文库下载免费方法_百度文库文档免费下载
  • 【华为OD机试真题】黑白棋 · N×N棋盘移动范围问题(Java/Go)
  • TypeScript的as断言与satisfies操作符的类型安全比较
  • AI工具帮助程序员做网页的经历
  • 基于SpringBoot+Vue的智能健身跟踪系统毕设项目(完整源码+论文+部署)
  • ICANN是什么组织?ICANN与域名是什么关系?为什么注册商需要获得ICANN的授权?
  • Docker部署.NET10 项目
  • 测试宇宙假说:我们是否生活在模拟测试中?——软件测试从业者的专业视角
  • Java常用API之String类:
  • ABB机器人仿真工作站:超便捷教学实训平台
  • Rust的std--mem--transmute:类型转换的终极武器(及危险)
  • AI检测算法不断升级:免费降AI工具如何应对新挑战
  • 使用Jsoup爬取豆瓣电影Top250(附Java代码)
  • Redis 队列学习笔记(List Queue)
  • 告别API封号焦虑:分享一个稳定的Claude Code与OpenAI Codex接入方案
  • PMIC小记
  • server-http.ts 文件分析
  • 编程语言特性比较与适用场景选择建议
  • 英伟达GTC 2026“芯片全家桶”震撼登场,微美全息构建全栈算力创新体系迎风而上
  • 用户生成内容:海量数据存储与检索的优化
  • 46页精品PPT | 数据治理大数据平台资源规划与建设解决方案
  • python-flask大学生志愿者组织活动报名管理系统_9fcw0
  • 从315曝光的LLM语料污染看GEO工程化治理
  • 容器化部署最佳实践指南