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

使用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.lryc.cn/news/400199.html

相关文章:

  • [终端安全]-6 移动终端之应用程序安全
  • 基于望获实时Linux的高性能运动控制器适配
  • 电气工程VR虚拟仿真实训平台以趣味化方式增强吸引力
  • 数据结构(单链表(1))
  • STM32第十八课:SPIFlash
  • 如何使用IPython的并行计算能力处理大数据
  • 前端热门面试题二
  • Android TabLayout+ViewPager2如何优雅的实现联动详解
  • k8s快速部署一个网站
  • 期货量化交易客户端开源教学第四节——交易接口协议
  • M1000 4G蓝牙网关:高速稳定,赋能物联网新体验
  • 中国高端水果元宇宙
  • MySQL:库操作
  • struts2如何防止XSS脚本攻击(XSS防跨站脚本攻击过滤器)
  • SQL基础 | NOT NULL 约束介绍
  • C语言 ——— 实用调试技巧(Visual Studio)
  • 音频demo:使用faad2将AAC数据解码出PCM数据
  • 力扣 hot100 -- 多维动态规划
  • [misc]-流量包-wireshark-icmp
  • 探索性数据分析:使用Python与Pandas库实现数据洞察
  • 枚举的高阶用法之枚举里写方法以及注入spring的bean
  • 游戏开发面试题2
  • 华为机试题-单车道汽车通行时间-Java
  • 6-5,web3浏览器链接区块链(react+区块链实战)
  • C# 多态性
  • Visual Studio 安装程序无法执行修复或更新
  • C#与PLC通信——如何设置电脑IP地址
  • Milvus 核心设计(1) ---- 数据一致性的等级及使用场景
  • EasyCVR视频技术:城市电力抢险的“千里眼”,助力抢险可视化
  • 【Wamp】局域网设备访问WampServer | 使用域名访问Wamp | Wamp配置HTTPS