使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞船动画(三)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-滚动背景(四)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人配置(五)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-碰撞框和受伤区域(六)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-受伤 爆炸 销毁组件(七)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人生成器(八)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-标题菜单及游戏结束界面(九)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-基础得分系统(十)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-最高分和数据记录(十一)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-黄色敌人(十二)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-粉色敌人状态切换(十三)
整体开发还是基于组件的思维。相比于工厂模式或者状态机,可能有些老套,但是更容易理解和编程
教程大概是2个小时 基本上一个小时就能有游戏的雏形。
不过由于都是初学者,所以大概整体是应该4个小时左右。
本篇文章实现另一个有粉色敌人,约15分钟
加油!还有4节就完成这个游戏了!最多还有1个小时!
粉色子弹制作
单独创作一个场景,做粉色的敌人子弹,添加2D动画节点。如图所示
还是素材中已经有子弹,找到即可,按照之前教程制作动画帧
动画需要开启自动循环,FPS设为5,可以测试一下
接下来需要添加hitbox区域 ,添加一个hitboxcomponent组件,检查器collsion属性layer取消1,mask设置为1
添加碰撞形状collsionShape2d,如图所示,区域略小于实际子弹,让玩家更容易躲避
添加移动组件,记得设置y轴速度为30,acter为子弹场景
添加可视性VisibleOnScreenNotifier2D,按照图像调整可视区域,再添加缩放scalecomponent,记得设置scalecomponent检查器属性的动画节点
再添加一个node2d节点,更改名称为ancheor,调整组件节点位置,然后添加animationplayer节点控制动画
调整节点树主要是为了实现子弹发射时震荡的效果,这样就可以对这个锚点ancheor的统一操作
animationplayer新建一个动画,更改名称如图所示
设置anchor节点位置,postion设置为-4,点击右侧箭头直接添加关键帧到动画中,再postion设置为4.,在0.5秒再次添加关键帧
开启循环,播放动画,能够看到子弹不断左右循环运动。
为了使得动画更加顺换,将插值模式线性改为三次方,这会使得子弹更加顺滑的震荡
子弹基本就制作完成了
粉色子弹发射
回到粉色敌人场景,在状态states中添加新状态组件statecomponet 改名为FireState状态,添加生成器SpawnerComponent组件作为子节点,SpawnerComponent检查器场景属性设置为刚才创建的子弹场景
由于有两个SpawnerComponent,将我们新加入的节点更改名称为ProjectileSpawnerComponent,然后设置为唯一名称
ctrl拖入脚本,初始化火焰状态和生成器,确保四个状态是同一父节点
代码修改如下,主要逻辑就是在移动状态完成后,触发火焰状态,缩放子弹并且生成子弹在粉色敌人的全局位置上
然后需要将这个状态完成传输出去,并且这个状态完成后需要跳转到停止状态,构成状态循环
请稍微注意,之前FireState是state而不是stats组件
这里需要注意,生成器位置需要使用global_position位置,原因是状态机没有位置节点,只有node2d才有 子节点没有,子节点的子节点自然也没有
运行游戏后,如果粉色敌人横向运动后能够发射粉色子弹,说明状态机添加是成功的,代码修改无误
子弹没有左右震荡,那么切换回子弹场景,选中自动播放,子弹就会震荡了,同时记得将RESET中初始位置设置为0
新建粉色子弹脚本,代码如下,主要逻辑也很简单
1初始化可视化窗口,缩放组件,和攻击组件
2缩放组件播放动画,攻击组件如果触碰到飞机自动销毁,可视化窗口触发后也销毁
再次运行后,敌人和子弹触碰后都会销毁
最后设置敌人生成器EnemyGenerator,与之前绿色和黄色敌人相同,删除主世界中的测试粉色敌人,添加代码
ok粉色敌人和子弹都完整完成,现在三种敌人都被正确的添加到场景中,你可以调整三个的生成时间来控制难度,
下一章制作动态难度曲线