使用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分钟
黄色敌人添加
首先先找到enemy的基础场景,然后同样创建一个继承场景,改名字为YellowEnemy
黄色敌人前期创作可以参考前面第一个绿色敌人创作,仍然需要添加动画精灵,碰撞等
首先添加黄色敌人精灵动画
动画调节设置FPS和自动播放
设置可视节点适配动画大小
状态设置
设置StatsComponent中敌人生命值为6
设置MoveComponent中检查器Acter为主节点,然后y轴速度设置为10
ScoreComponent 分数组件设置调整分数为10,毕竟生命值都6了,击杀他应该获得更高分数
ScaleComponent 设置动画效果
同样的FlashComponent ,ShakeComponent也要设置动画效果,没有一一截图了
碰撞设置
两个的碰撞层需要设置,不过由于我们都是继承enemy节点,所以之前已经设置过不需要更改
HurtBoxComponent组件中添加CollisionShape2D碰撞形状,然后设置形状为整个动画
HitBoxComponent攻击节点也同样添加CollisionShape2D碰撞形状,当然设置攻击区域略小于受击区域,让敌人攻击区域小一点
黄色敌人生成
切换到EnemyGenerator,增加一个黄色敌人生成定时器,定时器需要启动OneShort和Autostart
代码需要新增三行,新增一个黄色敌人的载入场景,然后初始化黄色敌人定时器,然后参考绿色敌人的生成方式,复制代码。修改场景和定时器生成黄色敌人
yellow_enemy_spawn_timer.timeout.connect(handle_spawn.bind(YellowEnemyScene,yellow_enemy_spawn_timer))
保存脚本,加载黄色敌人场景到敌人生成器中
现在再运行,能够生成黄色敌人,攻击6次后消失,最基础的黄色敌人就构建完成了
敌人路径规划
首先需要构建一个继承脚本,但是由于yellowEnemy没有类名,所以先切换到yellowEnemy在脚本中声明类
然后右键扩展脚本
修改脚本代码extends "res://enemies/enemy.gd"为extends Enemy
这样好处是即使路径更改,仍然能够继承
这里代码需要调用父类的初始化方法
关键点在于Super()方法
如果父节点中定义了某个函数,那么子节点也继承这些函数将
而super则是意味着先执行父类中的这些函数逻辑。确保父类的逻辑不受影响,相当于先运行了父类函数
由于父类中已经实现了部分函数,因此只需要修改movecomponent组件中的X轴速度值就可以改变路径,当然,需要设置随机的矢量才能让敌人随机向左或者向右移动
不过单纯的修改x速度,那么敌人超出范围后就会消失,因此我们还需要添加borderBouncecomponent碰撞反弹组件,那么敌人就会到边缘反回运行,碰撞具体逻辑请详见组件
初次之外 需要在world中添加随机化函数randomize(),保证每次随机数都是随机的,这样每次重新开始游戏,敌人的生成都是随机的
运行游戏,这样两种敌人就都正常运行了
在这章之后,后续视频教程就需要看外网视频了,具体链接在我的第一章教程里面有,下一章为另一个粉色敌人的增加
资源下载
https://download.csdn.net/download/watch361/89543133