文章目录
- 开发思路
- 发射点添加
- 子弹组件构建
- 子弹处理
- 缩放效果
- 闪光效果
使用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组件。
结束!,这一部分基本完成!一个基本的飞机发射子弹已经完成