godot2D游戏教程系列一(4)

  • 前言:

  • 我是根据b站上的视频进行学习,并且总结写下笔记,然后做此分享。笔记非常详细以至于你可以通过查看文章进行快速学习并且制作出游戏出来。当然视频学习的链接我也放在下面了:

  • 视频学习:https://www.bilibili.com/video/BV1fuCrYFEoG?spm_id_from=333.788.videopod.sections\&vd_source=078d5d025b9cb472d70d8fda1a7dc5a6

  • 制作完成的成果,可以点击进去进行在线游玩:https://yunbiansanbu.itch.io/my-frist

  • 音频/美术资源包下载:https://pan.quark.cn/s/570e6714e5ea

  • 完成目标

  • 首先为玩家添加跑步动画:在玩家的 ​​AnimatedSprite2D​​ 节点中创建 ​​run​​ 动画,通过精灵帧网格自动分割导入素材并调整播放帧率以获得自然效果。随后在脚本中获取并缓存 ​​AnimatedSprite2D​​ 节点,通过暴露的 ​​animator​​ 变量在检查器中完成绑定。根据玩家速度向量进行条件判断:当速度为零时播放待机动画,移动时切换为跑步动画,实现动画状态切换。

  • 其次,为限制玩家移动范围,添加空气墙:在主场景中创建 ​​StaticBody2D​​,并配置 ​​CollisionShape2D​​,使用 ​​WorldBoundaryShape2D​​ 作为无限延伸的边界墙。同时为玩家角色补充碰撞体,确保与边界产生物理碰撞。通过复制并旋转边界墙,分别设置上下左右四个方向的限制。最后将四面空气墙统一放入一个父节点进行分组管理,重命名并锁定节点,便于后续维护与调整。

  • 实现过程:

  • 加跑步动画

  • 回到我们的玩家精灵节点,点击右边的sprite frames,然后点击左下角动画的加号,添加玩家跑步的动画

  • 新建一个run的动画之后点击网格给动画添加帧图片,选择小狐狸的精灵图片,然后选择自动分割之后,选择第二行的图片(鼠标左键点击然后往右滑这样子可以快捷选中,ctrl+滚轮可以放大缩小)
  • 添加完成之后,可以点击上面的播放按钮,进行预览小狐狸跑动起来的效果,这里初始5帧循环播放有点快所以设置为12帧播放(这里没播放预览还是代码界面是因为(O_o)??需要切换为2d界面)
  • 然后为了控制玩家的动画变化,比如从待机动画切换到跑步动画,我们需要进行获取一下玩家animated sprite2D节点就是玩家的精灵节点。我们用一个变量去进行存储它
  • 我们新建一个animator的变量,声明它的类型并且把它暴露在检查器中
  • 点击玩家节点,然后看右边的检查器中就可以看到我们的animator变量了,我们有2种方式进行赋值:1.是将作出场景树的animated sprite2D节点直接拖拽过去,2.是直接点击添加指导的节点
  • 只有玩家移速为0的时候,我们才进行播放待机动画,玩家移动起来的时候我们需要播放跑步动画,所以我们需要使用一下if语句进行判断
  • 如果移动速度为二维向量的0的时候播放待机动画,否则就播放跑步动画
  • 限制移动范围,添加空气墙
  • 回到主场景添加一个新节点,这个节点是staticBody2D(静态物理物体)
  • 添加完成之后会显示一个警告,说缺少一个节点Collisionshape2D节点,这个节点是一个2d碰撞形状
  • 选中我们的staticBody2D节点,然后点击添加子节点,然后搜索Collisionshape2D节点进行添加
  • 然后我们需要给这个碰撞体设置一下形状,选中Collisionshape2D节点,点击右边检查器的shape,我们选择第一个WorldBoundaryshape2D,这个是一个无限延伸的墙,所以很适合做空气墙
  • 添加完成之后我们会在我们的界面上看到一道蓝色透明的横线,我们进行调整移动它的位置就好
  • 另外玩家角色也是需要设置一个碰撞体,正如我们之前一直没有进行设置所以,在玩家节点会有一个三角形的警告
  • 所以为了让玩家和这个空气墙碰撞限制,我们也得是加上碰撞体,在这里使用设置了一个圆形作为玩家角色的碰撞体
  • 然后我们可以通过调节圆形的橙色小点来控制圆形的位置和大小
  • 为了限制玩家在上下左右都不能超出,所以要上下左右都设置空气墙,我们刚才只是设置了下面,还有其他三个方向要设置,于是我们之间选中刚才的节点进行复制
  • 然后我们需要对其他三个空气墙进行调整方向,点击观察器上面的旋转按钮进行旋转
  • 如图这样子我们四个墙就造好了
  • 然后为了给这个空气墙墙进行分组进行统一管理,我们新建一个一个node的子节点
  • 然后我们将四个墙的节点移动到里面,并且重命名为boundary节点,并且上锁


*

相关推荐
郝学胜-神的一滴5 小时前
游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱
开发语言·计算机网络·程序人生·游戏·游戏引擎
全速向光14 小时前
盖世游戏PC模拟器:手机也能畅玩电脑平台游戏
游戏·智能手机
Minecraft红客14 小时前
以撒的结合
python·游戏·电脑·娱乐
the3clipse1 天前
视频编码技术如何赋能游戏性能优化:从硬件隔离到AI驱动的带宽革命
游戏·性能优化·音视频·视频编码·硬件加速·ai编码·自适应编码
jeffsonfu1 天前
生成对抗网络(GAN)原理:生成器与判别器的“猫鼠游戏”
人工智能·游戏·生成对抗网络
解决小子2 天前
【游戏作品设计解析】类魂游戏设计解析
游戏·业界资讯·游戏策划·游戏设计
k4m7v2pz2 天前
用中文编程语言写游戏:玄铁语言生命游戏的 macOS 适配实录
游戏·macos·玄铁·生命游戏·中文编程语言·玄铁中文编程
JQweryuiop8 天前
中小型游戏陪练工作室数字化管理实践:基于七彩屋电竞护航小程序订单、履约与绩效系统的落地复盘
大数据·游戏·小程序·架构
乌萨达9 天前
低配电脑玩手游怎么设置?4GB、8GB内存与模拟器选择指南
游戏·电脑·安卓模拟器·雷电模拟器
林川~0111 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具