godot2D游戏教程系列一(5)

  • 前言:
  • 完成目标
  • 首先创建子弹场景:以 ​​Area2D​​ 作为根节点,用于检测子弹与敌人的碰撞;添加 ​​Sprite2D​​ 显示子弹图片,并配置 ​​CollisionShape2D​​(矩形)作为碰撞体,调整大小与位置后保存为 ​​Bullet​​ 场景。随后在子弹根节点编写脚本,定义可在检查器中调整的速度变量,使子弹以固定速度持续向指定方向移动。

  • 接着实现玩家自动发射子弹机制:在玩家场景中添加 ​​Timer​​ 节点,开启 ​​Autostart​​、关闭 ​​One Shot​​,通过 ​​timeout​​ 信号定时触发射击逻辑。在玩家脚本中预加载子弹场景,在计时结束时实例化子弹,将其生成位置设置为玩家(或枪口)附近,并加入当前场景作为子节点。为保证逻辑合理性,增加条件判断,仅在玩家站立且未死亡时才允许发射子弹。

  • 最后对性能与逻辑进行优化:移除主场景中多余的子弹实例引用,统一由玩家动态生成;同时在子弹的 ​​_ready()​​ 中加入定时销毁机制,防止场景中累积过多子弹节点。至此完成了子弹生成、自动发射、移动与回收的完整流程。

  • 实现过程:
  • 我们通过子弹进行消灭敌人,需要做一个子弹场景
  • 子弹场景的根节点也是选择area2d,因为我们需要判断子弹是否撞到了史莱姆
  • 然后我们需要给子弹添加图片,因为子弹没有动画,所以我们这里添加sprite2d就可以了(但是如果说你想给玩家的子弹弄得多彩一些就可以考虑加上一下动画使用那个Animatedsprite2D精灵动画节点)
  • 然后我们将子弹图片拖拽到这个精灵节点右侧检查器的纹理参数里面
  • 然后给子弹加上物理形态就是Collisionshape2D节点进行参与碰撞
  • 添加完节点之后,我们选择长方形形态,调整大小和位置进行覆盖
  • 然后保存这个场景到scense文件夹中,起名为Bullet
  • 给子弹添加代码让它动起来
  • 选中子弹的根节点,给子弹场景添加脚本代码
  • 我们新建一个子弹速度的变量并且暴露在检查器中,然后让子弹根据每秒100像素的距离像右移动
  • 然后我们将子弹场景添加到主场景中
  • 让玩家角色根据倒计时每秒都进行自动释放子弹,在玩家场景添加一个新的时间节点,timer
  • 这里突然发现需要有一个纠正就是我把玩家的物体形态放在了主场景那里而不是玩家场景中,不过也是不影响运行游戏,不过出于严谨我这里还是把其放回到了玩家场景中
  • 如果我们把one shot的勾选上,这样子倒计时结束就不会重新开始了,因为我们想要玩家持续发射子弹,所以我们就不要勾选它。然后我们需要勾选下面的那一个autostart,倒计时才会自动在游戏开始的时候开始倒计时
  • 然后我们来到timer节点右侧的信号,找到专属的信号事件,叫timeout,这个信号事件是每次倒计时结束的时候都会被触发
  • 我们双击这个信号,将其链接到玩家场景的脚本代码上
  • 为了控制子弹场景,我们来定义一个变量进行获取子弹场景
  • 然后我们需要编写一下这个发射子弹的函数,先生成一个子弹节点保存到临时变量里面,然后将子弹场景位置设置在玩家位置,最后把子弹节点变成场景当前的一个子节点
  • 我们接着到玩家场景节点右侧的检查器去设置好获取子弹场景,点击快速加载然后选择子弹场景就好
  • 然后我们还要回到主场景把原先链接的子弹场景进行删除掉
  • 然后我们为了让子弹从枪管中出来,我们还需要简单修改一下子弹场景出来的位置
  • 然后我们想要当玩家只有站立的时候才会输出子弹,那么我们还需要加一个判断玩家的速度是否为0
  • 然后玩家死亡的时候就不能再发射子弹了,所以还有加一个判断玩家是否失败
  • 然后我们在发射子弹的时候会生成很多很多的子弹场景,所以我们还需要来一个定时摧毁,我们在ready函数里面加入一个倒计时,倒计时到了之后就摧毁这个子弹场景


*

相关推荐
User_芊芊君子21 小时前
HCCL高性能通信库编程指南:构建多卡并行训练系统
人工智能·游戏·ai·agent·测评
前端不太难1 天前
HarmonyOS 游戏里,Ability 是如何被重建的
游戏·状态模式·harmonyos
灵狐数据FoxData1 天前
QQ农场今日回归,我们想“偷”回的到底是什么?
游戏·社交电子·业界资讯·娱乐·玩游戏
微祎_1 天前
Flutter for OpenHarmony:构建一个 Flutter 平衡球游戏,深入解析动画控制器、实时物理模拟与手势驱动交互
flutter·游戏·交互
renke33641 天前
Flutter for OpenHarmony:构建一个 Flutter 色彩调和师游戏,RGB 空间探索、感知色差计算与视觉认知训练的工程实现
flutter·游戏
ujainu1 天前
Flutter + OpenHarmony 实现经典打砖块游戏开发实战—— 物理反弹、碰撞检测与关卡系统
flutter·游戏·openharmony·arkanoid·breakout
呆呆敲代码的小Y1 天前
【Unity 实用工具篇】 | Book Page Curl 快速实现翻书效果
游戏·unity·游戏引擎·u3d·免费游戏·翻书插件
串流游戏联盟1 天前
星铁4.0前瞻开启!手机玩家体验或将进一步下降
游戏·远程工作
renke33641 天前
Flutter for OpenHarmony:构建一个 Flutter 数字迷宫游戏,从随机路径生成到认知训练系统的完整工程实践与跨学科深度解析
flutter·游戏
子春一1 天前
Flutter for OpenHarmony:构建一个 Flutter 数字消消乐游戏,深入解析网格状态管理、合并算法与重力系统
算法·flutter·游戏