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

文章目录

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

使用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.mzph.cn/pingmian/47013.shtml

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

相关文章

中英双语介绍一级市场(Primary Market)和二级市场(Secondary Market)

中文版 一级市场和二级市场是金融市场中的两个主要部分,分别对应证券发行和交易的不同阶段。 一级市场(Primary Market) 定义: 一级市场,又称新发行市场,是指证券首次发行和出售的市场。在一级市场中&am…

前端基础之JavaScript学习——变量、数据类型、类型转换

大家好,我是来自CSDN的博主PleaSure乐事,今天我们开始有关JS的学习,希望有所帮助并巩固有关前端的知识。 我使用的编译器为vscode,浏览器使用为谷歌浏览器,使用webstorm或其他环境效果几乎一样,使用系统自…

【JavaEE】HTTP(2)

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 🤡🤡🤡下一篇文章:【JavaEE】HTTP协议(…

ELK日志管理

文章目录 一、ELK概述什么是ELK?为什么使用ELK?ELK的工作原理 二、安装部署ELK前期准备安装部署Elasticsearch 软件修改系统配置安装插件在应用服务器上部署 Logstash安装 kibana 一、ELK概述 什么是ELK? 通俗来讲,ELK 是由 Elasticsearch、Logstash…

vue3+TS从0到1手撸后台管理系统

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue(以home组件为例) 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } from vue-router import …

集合媒体管理、分类、搜索于一体的开源利器:Stash

Stash:强大的媒体管理工具,让您的影音生活井井有条- 精选真开源,释放新价值。 概览 Stash是一个专为个人媒体管理而设计的开源工具,基于 Go 编写,支持自部署。它以用户友好的界面和强大的功能,满足了现代用…

每日刷题(cf)

目录 1.C. Increasing Sequence with Fixed OR 2.C. Jellyfish and Green Apple 3.B. Jellyfish and Game 1.C. Increasing Sequence with Fixed OR Problem - C - Codeforces 题目要求我们构造一个最长的序列,使得任意相邻两个元素按位或等于n,我们对…

网络安全-网络安全及其防护措施5

21.互联网交换点(ISP) IXP的定义和作用 互联网交换点(IXP)是一个物理基础设施,通过它,互联网服务提供商(ISP)和内容提供商可以互相交换互联网流量。IXP的目的是提高网络性能、降低带宽成本和减…

【源码阅读】osproxy对象存储分布式代理(1)

osproxy 项目地址 osproxy是一个使用Go语言开发的对象存储分布式代理(object-storage-distributed-proxy),可以作为文件存储微服务,文件会在服务中转处理后再对接到对象存储,包括但不限于以下功能: 分布式uid及秒传,…

数仓工具—Hive语法之事务表更新Transactional Table Update

Hive事务表更新 众所周知,Apache Hive 是建立在 Hadoop HDFS 之上的数据仓库框架。由于它包含表,您可能希望根据数据的变化更新表记录。直到最近,Apache Hive 还不支持事务。从 Hive 0.14 及以上版本开始支持事务性表。您需要启用 ACID 属性才能在 Hive 查询中使用更新、删…

SQLMC:一款高性能大规模SQL注入安全扫描工具

关于SQLMC SQLMC是一款功能强大的高性能SQL注入安全扫描工具,该工具作为Kali Linux官方内置工具的其中一个部分,可以帮助广大研究人员检测目标域名的所有URL节点是否存在SQL注入问题。 该工具基于纯Python开发,适用于红队和蓝队成员&#xf…

【入门级】docker

开头处生动的描述一下”码头工人”吧:小鲸鱼(登记处Registry:比如docker hub官方)背着好多集装箱(仓库repository:存放各种各样的镜像,一般存放的是一类镜像,这一类镜像中通过tag 版…

HTTP基本原理

URI URI Universal Resource Identifier 统一资源标志符 URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。 通过URI找到资源是通过对名称进行标…

京东Android一面凉经(2024)

京东Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《京东Android一面凉经(2024)》。 面试职位: Android开发工程师 技术一面 面试时长: 50…

如何解决隐藏游戏服务器的源IP问题

在网络游戏领域,保护服务器的源IP地址不被轻易发现是一项重要的安全措施。游戏服务器的源IP一旦暴露,可能会遭受DDoS攻击、扫描和各种形式的安全威胁。然而,对于合法的游戏运营商而言,有时需要对服务器进行维护或调试,…

2个方法快速解决word文档编辑限制

Word文档不能编辑的情况想必有很多的朋友都有碰到过吧,通常Word文档不能编辑主要是由于Word文档被加密或者Word文档被锁住导致,下面小编给大家整理了一些相关的解决方法,希望对大家有所帮助。 一、取消word文档限制保护 我们可以在文档里点击…

外卖系统定制开发:技术选型与架构设计要点

随着外卖行业的迅速发展,餐饮企业需要一个高效、稳定、可扩展的外卖系统来满足日益增长的用户需求。本文将探讨外卖系统定制开发的技术选型与架构设计要点,并提供一些示例代码来说明关键技术的实现。 一、技术选型 1. 前端技术选型 外卖系统的前端需要…

oracle adg切换

作者:广大 1 主库转备库 注意:原则上至多只能有一个主库,但是备库可以多个,所以需要先进行主库转备库操作。 1.1 查看主库角色切换状态 SYSproe>select name,database_role,switchover_status from v$database;NAME …

【node-RED 4.0.2】连接操作 Oracle 数据库实现 增 删 改 查【新版,使用新插件:@hylink/node-red-oracle】

总览 上节课,我们说到,在 node-red 上链接 oracle 数据库 我们使用的插件是 node-red-contrib-agur-connector。 其实后来我发现,有一个插件更简便,并且也更好用:hylink/node-red-oracle !!&am…

vue3 学习笔记11 -- 模板语法和指令

vue3 学习笔记11 – 模板语法和指令 模板语法 文本插值&#xff1a;使用双大括号 {{ }} 插入文本。 <script setup>const message ref("Hello Vue3!!") </script> <template><p>{{message}}</p> </template>指令 以 v- 开头…