使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-受伤 爆炸 销毁组件(七)

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

开发思路

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

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

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

本篇文章实现敌人受伤、爆炸、销毁的相关效果,约15分钟

受伤组件

添加HurtComponent组件到enemy下,确保所有敌人都可以使用。检查器需要配置状态组件,主要是将受伤框和状态数据关联起来,受到伤害时会通过状态组件减少生命值,
在这里插入图片描述

代码修改如下,增加缩放,闪烁,摇动动画,调用对应函数即可,
代码分析:
调用了缩放组件的tween_scale 闪光组件的 falsh()和振动组件的tween_shake
这些组件实现了对应动画
还增加了一个连接connect,组件没有生命值后销毁该组件
在这里插入图片描述
运行游戏,攻击敌人后,敌人会闪烁震动,攻击敌人三次后消失。

爆炸组件

爆炸效果

调用已经存在的组件,使用组名称是一次性动画效果onetime_animated_effect
作用是提供一个精灵动画类,完成时销毁自身
新建一个场景,根节点为onetime_animated_effect
名字修改为ExplosiondEffect爆炸效果
在这里插入图片描述

找到素材中爆炸效果,然后添加到动画精灵中,动画名称随意,水平5 垂直1
在这里插入图片描述

由于动画速度较慢,因此fps调整为10加快动画效果,并打开自动播放
动画无法自行启动就无法触发销毁
在这里插入图片描述

生成器添加

爆炸效果做好了,需要添加一个生成器,生成爆炸
切换到敌人场景,添加生成组件SpawnerComponent
将做好的爆炸场景添加到检查器属性场景中

在这里插入图片描述
再添加一个销毁组件DestoryedComponent,
组件作用是让敌人生命值为0时触发爆炸动画,并且销毁敌机组件
属性需要设置以下参数 ememy statcompoent SpawnerComponent 组件
在这里插入图片描述

在这里能够看出使用组件的好处。无需代码就可以实现爆炸效果
运行程序后,敌人死亡就会产生爆炸效果,不过爆炸效果无法消失
原因是动画循环选中后,不会发出动画结束的信号。
针对这个问题解决方案好几个
1关闭循环
2组件中直接添加代码删除自身
本次只暂时关闭循环

在这里插入图片描述
返回爆炸效果场景,关闭动画自动循环,爆炸就会消失

在这里插入图片描述

飞船摧毁动画

同样,飞船需要添加组件使得能够被摧毁
首先添加状态组件,生命值设置为1

在这里插入图片描述

再添加受伤区域组件hurtbox 碰撞区域要选择CollisionPolygon2D碰撞形状多边形,因为飞船形状不规则。
在这里插入图片描述
选中CollisionPolygon2D,点击右上角创建点的按钮,选择碰撞层layer是1, 然后沿着飞船边缘添加碰撞区域。
在这里插入图片描述

再添加状态栏,将受伤组件和飞船关联起来。
到这一步,飞船就已经能收到伤害了,飞船碰撞到敌人生命值会降低,但是还不会摧毁
在这里插入图片描述

因此要像敌人或者激光子弹例子一样,添加爆炸生成组件,也就是SpawnerComponet组件
在这里插入图片描述
SpawnerComponent2修改名称为ExplosionSpawnerComponent
场景加载为爆炸场景

在这里插入图片描述

DestroyedComponent组件和子弹类似,按照图片配置检查器属性
在这里插入图片描述
这样再运行游戏,飞船和敌人碰撞飞船就会爆炸,不过敌人不会摧毁。
在这里插入图片描述

敌人摧毁动画

代码只需要添加一行再在enemy中即可,
在这里插入图片描述

一般使用queue_free释放组件即可,使用queue_free.unbind(1) 是为了解绑参数 ,能看到hitbox存在一个参数
在这里插入图片描述
这样再运行游戏,敌人和飞船碰撞后就都会爆炸了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级馒头神

看看谁给我第一个打赏。太感谢您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值