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节点,并且上锁


*

相关推荐
2501_944525762 小时前
Flutter for OpenHarmony数独游戏App实战:笔记功能
笔记·flutter·游戏
葵花楹12 小时前
【JAVA课设】【游戏社交系统】
java·开发语言·游戏
java修仙传20 小时前
力扣hot100:跳跃游戏
算法·leetcode·游戏
hoiii1871 天前
C# 俄罗斯方块游戏
开发语言·游戏·c#
玉梅小洋1 天前
《游戏设计艺术(第三版)》第一章——锚定设计初心:成为游戏设计师的起点
笔记·游戏·个人开发·游戏策划
@CLoudbays_Martin111 天前
SDK游戏盾的工作原理具体是怎么完成防护的?
服务器·网络·安全·游戏
九影网络1 天前
H5游戏定制开发找哪家公司?
游戏
qq_546937272 天前
Windows11 26H1 游戏版!
游戏
2501_948122632 天前
React Native for OpenHarmony 实战:Steam 资讯 App 服务条款实现
javascript·react native·react.js·游戏·ecmascript·harmonyos