使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二)

文章目录

  • 开发思路
  • 发射点添加
  • 子弹组件构建
  • 子弹处理
  • 缩放效果
  • 闪光效果

使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一)

开发思路

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

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

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

本篇文章实现约10分钟

主要实现激光子弹的动画效果

发射点添加

添加两个marker LeftMuzzle RightMuzzle
在这里插入图片描述
这两个作为激光枪的发射枪口 位置放在对应的像素点上
在这里插入图片描述
然后新建一个脚本,链接到ship上,后续添加具体代码

子弹组件构建

新建一个场景,名字叫做Laser,主要用于制作飞机发射的激光子弹
添加一个spite作为子弹, 然后在Asset文件夹中找到子弹的图片放在spite的texture中,直接拖进去就可以、
然后再添加一个movecompoinent作为移动元素

在这里插入图片描述
添加movecompoinent主要作用是复用移动脚本,避免代码重复
检查器中选择acter为为laser,然后y轴速度设置为-200
子弹就做好了

在这里插入图片描述
接下来需要让子弹从飞机发射点发射,作者写了现成的组件,叫做spawner_component(旋转发射器)
在commpoents中选择spawner_component添加在ship下面,场景选择laser
在这里插入图片描述
现在只是添加了组件,需要代码实现具体子弹在两个发射点的生成。
切换到ship脚本,按住ctrl 拖动LeftMuzzle RightMuzzle spawnercomponent到脚本中
这样能够更便捷的生成代码,进行三个部件的变量初始化
在这里插入图片描述
拖动后发现没有类型提示,需要手动开启godot类型提示
点击菜单-编辑器-编辑器设置-补全-添加类型提示,打勾
在这里插入图片描述
这样,重新拖动就自动添加类型提示了

在这里插入图片描述
但是godot自动添加的类型提示有时也不准确,部分需要自己修改
然后添加代码如下,主要用于控制左右发射点代码用组件生成
在这里插入图片描述

然后在ship中新建定时器,改名为FireRateTImer 作为发射间隔
检查器设置timer参数,等待时间0.4s 然后自动重置
请添加图片描述

然后就是同样添加代码,ctrl添加定时器到代码初始化变量,然后ready中添加定时器和子弹生成的连接
在这里插入图片描述
到这一步请运行游戏,如果能够看到子弹从飞船发射点发送,那么子弹发射组件就构建成功了

子弹处理

首先运行游戏,在子弹发射过程中,能够看到子弹发送。但是能够看到子弹节点不断生成不消失,因此首先需要控制超过屏幕的子弹自动消失,否则程序迟早溢出崩溃
在这里插入图片描述

在子弹激光场景下面添加脚本,
添加visibleonscreeennotifier2d 节点
然后ctrl同样方式拖动节点到脚本中初始化

在这里插入图片描述
程序如下,超出范围后消失

在这里插入图片描述
然后调整子弹具体可视范围
在这里插入图片描述
在这里插入图片描述
再次运行,能够看到子弹新建序号增加,旧的不断消失,那么就正确了

在这里插入图片描述

缩放效果

增加缩放的效果,让子弹发射更有质感
增加作者写好的缩放组件scalecomponent 然后同样ctrl拖动初始化变量,设定检查器中缩放对象是ship,然后增加缩放代码,就能够看到飞船发射子弹时的缩放

在这里插入图片描述

同样的,子弹也可以设置对应的缩放效果,一样添加组件和代码,不同的就是缩放的尺寸和时间有所改变,缩放的对象变成spite的纹理
在这里插入图片描述

闪光效果

类似方法实现子弹的闪光
增加作者写好的缩放组件flashcomponent 需要确保素材路径是否对应你的文件路径
然后对象仍然选择spite节点,时间选择0.1s
在这里插入图片描述
与缩放相似,代码如下增加,调用flash组件。
在这里插入图片描述
请添加图片描述
结束!,这一部分基本完成!一个基本的飞机发射子弹已经完成

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

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

相关文章

STM32/GD32驱动步进电机芯片TM2160

文章目录 官方概要简单介绍整体架构流程 官方概要 TMC2160是一款带SPI接口的大功率步进电机驱动IC。它具有业界最先进的步进电机驱动器,具有简单的步进/方向接口。采用外部晶体管,可实现高动态、高转矩驱动。基于TRINAMICs先进的spreadCycle和stealthCh…

STM32 低功耗模式 睡眠、停止和待机 详解

目录 1.睡眠模式(Sleep Mode) 2.停止模式(stop mode) 3.待机模式(Standby Mode) STM32提供了三种低功耗模式,分别是睡眠模式(Sleep Mode)、停止模式(Stop …

Electron 简单搭建项目

准备工作 全局安装 node npm创建文件夹,并执行 npm init安装 electron npm i electron --save-dev在 package.json 配置文件中的scripts字段下增加一条start命令: {"scripts": {"start": "electron ."} }由于配置中的入…

MYSQL八股文汇总

目录 1、三大范式 2、DML 语句和 DDL 语句区别 3、主键和外键的区别 4、drop、delete、truncate 区别 5、基础架构 6、MyISAM 和 InnoDB 有什么区别? 7、推荐自增id作为主键问题 8、为什么 MySQL 的自增主键不连续 9、redo log 是做什么的? 10、redo log…

CY5-丙氨酸荧光探针,生物医学研究应用-星戈瑞

在生物医学研究中,荧光探针技术因其高灵敏度、高特异性和非侵入性而受科研应用。其中,CY5-丙氨酸荧光探针作为一种生物分子标记工具,近年来在细胞成像、蛋白质定位等领域展现出科研潜力。本文将详细介绍CY5-丙氨酸荧光探针的结构、性质以及其…

App H5+ 实现下载、查看功能 前后端实现(SpringBoot)

<!doctype html><html><head><meta charset"utf-8"><title>维修指南</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, minimum-scale0, maximum-scale0.85, user-scalableyes&quo…

下半年交火点:智驾全国都能开,智舱多模态大模型

“你猜一猜我现在参加什么样的活动呢&#xff1f;” “你参加的是WAIC&#xff0c;就是那个人工智能的大Party&#xff0c;超多科技高手都在这……” “你帮我介绍一下这本书吧。” “这书叫《反脆弱&#xff0c;从不确定性中获益》&#xff0c;讲的是怎么在混乱里找机会&am…

闲聊C++与面向对象思想

艾伦凯曾说&#xff0c;“I made up the term object-oriented, and I can tell you I did not have C in mind.”&#xff08;“我发明了术语‘面向对象’&#xff0c;可以告诉您我没有C”&#xff09;。 今天看到这句话&#xff0c;激发了笔者写一篇文章聊聊C与面向对象思想…

搞不清啊?伦敦金与上海金区别是?

进入黄金市场的朋友&#xff0c;有可能会被各式各样的黄金交易品种带得眼花缭乱&#xff0c;其实各品种虽然都以黄金作为投资标的物&#xff0c;但是也是各有不同的&#xff0c;下面我们就来比较一下相似的投资品种——伦敦金和上海金。 首先在比较之前&#xff0c;我们要搞清楚…

基于泰坦尼克号生还数据进行 Spark 分析

基于泰坦尼克号生还数据进行 Spark 分析 在这篇博客中&#xff0c;我们将展示如何使用 Apache Spark 分析著名的泰坦尼克号数据集。通过这篇教程&#xff0c;您将学习如何处理数据、分析乘客的生还情况&#xff0c;并生成有价值的统计信息。 数据解析 • PassengerId &#…

快速排序[原理,C++实现,注意事项,时间复杂度分析]

模板&#xff1a; //本模板来自ACwing void quick_sort(int q[],int l,int r) {if(l>r) return;int xq[lr>>1],il-1,jr1;while(i<j){do i;while(q[i]<x);do j--;while(q[j]>x); if(i<j) swap(q[i],q[j]);}quick_sort(q,l,j);quick_sort(q,j1,r); };原理&…

江苏高防服务器都有哪些优势?

江苏高防服务器所针对的应用群体是不同的&#xff0c;高防服务器与普通服务器的应用效果和功能上是有着很大的差别&#xff0c;所以企业与用户在进行挑选高防服务器时&#xff0c;会更加看重服务器的质量与服务效果&#xff0c;本文就来聊一下江苏高防服务器的优势有哪些吧&…

1509.三次操作后最大值与最小值的最小差

1.题目描述 给你一个数组 nums 。 每次操作你可以选择 nums 中的任意一个元素并将它改成 任意值 。 在 执行最多三次移动后 &#xff0c;返回 nums 中最大值与最小值的最小差值。 示例 1&#xff1a; 输入&#xff1a;nums [5,3,2,4] 输出&#xff1a;0 解释&#xff1a;我们最…

字典操作(获取类操作、添加更新类操作、字典删除类操作)

字典数据获取类操作 keys() 用来获取字典中所有的 key, 保存到一个列表中&#xff0c;并以 dict_keys类型返回 stu {name: Tom, age: 23, gender: male, address: BeiJing} ks stu.keys() print(ks)values() 用来获取字典中所有的 value &#xff0c;保存到一个列表中&#…

注册中心组成结构和基本原理解析

假如你正在设计和开发一个分布式服务系统&#xff0c;系统中存在一批能够独立运行的服务&#xff0c;而在部署上也采用了集群模式以防止出现单点故障。显然&#xff0c;对于一个完整的业务系统而言&#xff0c;这些服务之间需要相互调用并形成复杂的访问链路&#xff0c;一种可…

Casual decoder 和prefix decoder 区别

Causal Decoder&#xff08;因果解码器&#xff09;和Prefix Decoder&#xff08;前缀解码器&#xff09;是两种不同的语言模型架构&#xff0c;它们在处理文本生成任务时采用不同的注意力机制。 Causal Decoder是一种自回归模型&#xff0c;它在生成文本时只能依赖于已经生成…

mysql面试题 Day5

1 什么是事务&#xff1f; 事务是指 多个数据库操作组成一个逻辑执行单元&#xff0c;满足ACID四个条件。 A是指原子性&#xff0c;事务保证操作要么全部完成&#xff0c;要么全部不完成&#xff0c;不会出现部分完成的情况&#xff1b; C是指一致性&#xff0c;事务执行后&…

C++ 定时器触发

c定时器&#xff0c;能够定时触发&#xff0c;即每隔一段固定时间执行一下函数 #include <iostream> #include <thread> #include <chrono> #include <signal.h> #include <time.h> #include <cstring> #include <glog/logging.h>#…

SQL Server解决Float字段使用ISNULL时报错

SQL Server解决Float字段使用ISNULL时报错 一、前言1.报错内容2.解决案例 一、前言 1.报错内容 > [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]从数据类型 varchar 转换为 float 时出错。 (8114)。这个错误通常是由于SQL Server在执行ISNULL函数时遇到…

防抖和节流使用场景

防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是两种常用的性能优化技术&#xff0c;用于限制某些高频率执行的函数的调用次数&#xff0c;从而优化性能和用户体验。它们的主要区别在于控制函数执行频率的策略不同。 防抖&#xff08;Debounce…