使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-标题菜单及游戏结束界面(九)

news2024/9/22 23:37:57

文章目录

  • 开发思路
  • 标题菜单界面
  • 标题菜单脚本代码
  • 结束菜单界面
  • 结束菜单脚本代码

使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞船动画(三)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-滚动背景(四)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人配置(五)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-碰撞框和受伤区域(六)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-受伤 爆炸 销毁组件(七)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人生成器(八)

开发思路

整体开发还是基于组件的思维。相比于工厂模式或者状态机,可能有些老套,但是更容易理解和编程

教程大概是2个小时 基本上一个小时就能有游戏的雏形。

不过由于都是初学者,所以大概整体是应该4个小时左右。

本篇文章实现标题菜单及游戏结束界面,约15分钟

标题菜单界面

新建一个用户界面,名称改为Menu,绿色用户节点一般都是于UI相关节点
在这里插入图片描述

实列化Spacebackground背景,使得背景与游戏界面有着一样的视觉效果
在这里插入图片描述
接下来添加标题和提示信息,按空格键开始游戏
字体需要改为特定字体,节点使用label标签节点,需要设置自动居中
因此需要使用CenterContainer节点,节点的锚点需调整为全屏
在这里插入图片描述
接下来就是添加标签label
标签名称改为TitleLabel,标签Text改为Galaxy Defiance 银河抵抗
在这里插入图片描述
新建一个labelsetting 然后直接把字体文件拖进去设置
在这里插入图片描述
点击小箭头保存字体设置
在这里插入图片描述
保存为title_label_settings.tres,在font文件夹下,这样标题就做完了
在这里插入图片描述
接下来需要制作下一个标签,两个标签需要垂直排列且对齐,因此需要添加VBoxContainer容器
这些ui容器具有良好的排列效果,具体可以看我的UI介绍文章
在这里插入图片描述

新建一个startlabel标签,同样的新建一个标签设置,将字体拖动进去设置,尺寸改为8 文字写为Press “space” to play
在这里插入图片描述
字体同样保存,保存为default_label_settings.tres文件
在这里插入图片描述
字体未居中,需要设置居中,之前的标签也要这样设置
在这里插入图片描述
然后由于默认设置场景是战斗场景,需要更改menu为主场景,这样运行游戏就会先运行我们的标题菜单了

在这里插入图片描述

标题菜单脚本代码

菜单添加脚本,逻辑就是玩家按下空格键触发动作。使用ui_accept识别空格键作为触发事件
然后需要切换到主世界战斗场景
通过代码get_tree().change_scene_to_file进行场景跳转
world世界路径输入代码时有自动补全,选中即可
代码如下
在这里插入图片描述
再次运行游戏,这样如果按下空格能够运行游戏,那么标题菜单添加成功
请添加图片描述

结束菜单界面

与标题菜单类似,新建一个Gamerover用户节点,保存为场景,保存在menu文件夹下

在这里插入图片描述
同样实列化背景场景SpaceBackground,然后增加CenterContainer节点,节点的锚点需调整为全屏
在这里插入图片描述
添加VboxContainer 垂直排列子元素,然后就是添加gameoverlabel和menulabel
在这里插入图片描述

gameoverlabel标签设置和之前标题菜单设置同理,字体内容为Game over,字体文件可以直接用之前的title_label_settings拖到字体设置中。不需要重复设置
不过居中还是需要再设置一下
在这里插入图片描述

menulabel标签设置和之前标题菜单设置也同理,字体内容为press “space” to Return to the Start Menu,字体文件可以直接用之前的default_label_settings拖到字体设置中
文字需要居中
在这里插入图片描述

结束菜单脚本代码

gameover场景新建一个脚本,代码与标题仍然类似,可以复制代码,只需要更改跳转场景为menu

在这里插入图片描述
现在需要触发死亡后的场景跳转,目前代码中已经有船的死亡,但是仍然需要检测船的死亡
在world中添加脚本
在这里插入图片描述

脚本代码主要是需要实现当飞船摧毁时,延时1s跳转到游戏结束场景
首先初始化ship变量,ship的exiting节点当飞船摧毁时会被触发,因此需要connect该节点到一个函数触发
使用await来等待信号完成。 timeout为计时器超时

await  get_tree().create_timer(1,0).timeout

这是一种快速创建计时器并且设置时间的简便方式,不需要再在场景中添加timer节点

然后使用同样方式切换场景到游戏结束

这样游戏的结束就可以了,运行后应该有如下效果,能够死亡后延时1s跳转到gameover场景
请添加图片描述
基础游戏循环完成,下一章制作得分和游戏统计功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFC CRectTracker 类用法详解

CRectTracker 类并非 Microsoft Foundation Class (MFC) 库中应用很广泛的一个类,一般教科书中很少有提到。在编程中如果需编写选择框绘制以及选择框大小调整、移动等程序时,用CRectTracker 类就会做到事半而功倍。下面详细介绍MFC CRectTracker 类。 M…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十二)-无人机群在物流中的应用

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂,状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态,即应用中的可变数据,它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中,如何高效、可维护地管理状态,对于…

【Java--数据结构】队列

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 队列 队列的方法 队列方法使用举例 模拟实现队列 使用链表实现队列 使用数组实现队列 设计循环队列 双端队列 用队列实现栈 队列 只允许在一端进行插入数据操作&…

昇思25天学习打卡营第15天|基于MindNLP+MusicGen生成自己的个性化音乐

MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型(LM)的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本,相关研究成果参考论文《Simple and Controllable Music Generation》。 MusicGen模型基于Tra…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字,如何恢复? 比如 “门” 和 “直接” 的"直"字,显示成了 方法 修改字体, 菜单栏选择 Settings(设置),Style Configurator…(语言格式设置…)&#xf…

年轻人「躺平」、「摆烂」现象的根源是什么?

年轻人「躺平」、「摆烂」现象的根源是什么? 穷人没有资格躺平 我可以躺平吗?当然可以了! 对于有些人来说是躺平在房车里,直接开到命运的终点;而你是躺在马路中间,被命运的车轮反复碾压。 中国一线城市的00后,他们的父母多是没有哥哥、姐姐、弟弟、妹妹的独生子女,…

【Linux】多线程_7

文章目录 九、多线程8. POSIX信号量根据信号量环形队列的生产者消费者模型代码结果演示 未完待续 九、多线程 8. POSIX信号量 POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 创建…

怎样在 PostgreSQL 中优化对复合索引的选择性?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对复合索引的选择性一、理解复合索引的概念二、选择性的重要性三、优化复合索…

独立开发者系列(25)——大白话进程

很多小型的规模场景限制下,复杂概念弊端大于利端。不同模式的实现,是根据具体需求来判定,但是理解底层最基础的原理有助于理解很多工具背后的诞生。比如php的swoole workerman 要解决的问题。 首先理解,进程概念,进程…

线程安全(二)synchronized 的底层实现原理、锁升级、对象的内存结构

目录 一、基础使用1.1 不加锁的代码实现1.2 加锁的代码实现二、实现原理2.1 synchronized 简介2.2 对象监控器(Monitor)2.3 加锁过程第一步:判断 Owner 指向第二步:进入 EntryList 阻塞第三步:主动进入 WaitSet 等待三、锁升级3.1 对象的内存结构3.2 Mark Word 对象头3.3 …

实用教程:用 Go 的 net/textproto 包优化文本协议处理

实用教程:用 Go 的 net/textproto 包优化文本协议处理 介绍准备工作环境设置Go 基础回顾 基础使用创建连接发送请求接收响应 高级特性处理 MIME 头多行响应的管理错误处理与调试 实战案例实现一个简单的邮件客户端实现一个基于 net/textproto 的命令行工具 最佳实践…

【Wamp】局域网设备访问WampServer | 使用域名访问Wamp | Wamp配置HTTPS

局域网设备访问WampServer 参考&#xff1a;https://www.jianshu.com/p/d431a845e5cb 修改Apache的httpd.conf文件 D:\Academic\Wamp\program\bin\apache\apache2.4.54.2\conf\httpd.conf 搜索 Require local 和Require all denied&#xff0c;改为Require all granted <…

从头开始学习扩散模型 Stable Diffusion

今天我们来揭开 Stable Diffusion 技术的神秘面纱。 1.稳定扩散原理 Stable Diffusion 在2022年发表&#xff0c;一种基于Latent Diffusion Models的新兴机器学习技术。它基于扩散过程&#xff0c;利用数学模型将机器学习中的高维度数据降低到低维度空间&#xff0c;并在该空间…

【笔记】dbeaver导出数据库结构+数据 再导入其他数据库

导出&#xff1a; 导入 然后将语句粘贴进去 会有报错 选全部跳过 然后就全部添加成功了 虽然我不知道为什么报错 但是能加进去数据结构和数据都在就无所谓了 第二个版本 DBeaver导出sql脚本&#xff0c;执行sql脚本-CSDN博客 通过工具 DBeaver操作 MySQL导入备份的 sql 报错…

写好计算机类博文的技巧

在信息时代&#xff0c;计算机类博文成为了分享知识和经验的重要渠道。无论你是技术专家&#xff0c;还是爱好者&#xff0c;一篇优秀的计算机类博文不仅能展示你的专业能力&#xff0c;还能帮助他人解决问题。以下是写好计算机类博文的一些技巧&#xff0c;帮助你提升写作质量…

Netgear WN604 downloadFile.php 信息泄露漏洞复现(CVE-2024-6646)

0x01 产品简介 NETGEAR WN604是一款由NETGEAR(网件)公司生产的无线接入器(或无线路由器)提供Wi-Fi保护协议(WPA2-PSK, WPA-PSK),以及有线等效加密(WEP)64位、128位和152位支持,保障网络安全。同时支持MAC地址认证、802.1x RADIUS以及EAP TLS、TTLS、PEAP等安全机制,…

Descriptions 描述列表 label-class-name

需求&#xff1a; 在el-descriptions-item加上label-class-name‘fwText’ :deep(.fwText) { font-weight: bold !important; background-color: #f5f7fa !important; }

【理解C++中的树】

目录 一、树&#xff08;Tree&#xff09;的概念1.1、树的基本定义1.2、基本术语1.2、树的性质 二、二叉树2.1、二叉树的定义2.2、特殊二叉树2.2.1、满二叉树2.2.2、完全二叉树2.2.3、二叉排序树2.2.4、平衡二叉树 .3、二叉树的性质2.4、二叉树存储的实现2.4.1、顺序存储2.4.2、…

【香橙派 AIpro测评:探索高效图片分类项目实战】

前言 最近入手了一块香橙派 AIpro开发板&#xff0c;在使用中被它的强大深深震撼&#xff0c;有感而发写下这篇文章。 本文旨在深入探讨OrangePi AIpro的各项性能&#xff0c;从硬件配置、软件兼容性到实际应用案例&#xff0c;全方位解析这款设备如何在开源社区中脱颖而出&am…