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


*

相关推荐
xiezhr2 天前
米哈游36岁程序员被曝复工当晚猝死出租屋内
游戏·程序员·游戏开发
爱搞虚幻的阿恺6 天前
Niagara粒子系统-超炫酷的闪电特效(加餐 纸牌螺旋上升效果)
游戏·游戏引擎
智算菩萨6 天前
儿童游乐空间的双维建构:室内淘气堡与室外亲子乐园的发展学理、功能分野与协同育人机制研究
游戏·游戏策划
marteker6 天前
房地产市场平台Zillow与《魔兽世界》合作展示游戏内房屋
游戏
wanhengidc6 天前
云手机 打造云端算力
运维·服务器·网络·游戏·智能手机
henry1010106 天前
DeepSeek生成的HTML5小游戏 -- 黑8台球
前端·javascript·css·游戏·html
yuanmenghao7 天前
从零开始:使用 Claude Code 打造字母消除游戏
游戏·glm·claudecode
阿甘编程点滴7 天前
2026年推荐以下5款游戏直播提词器
游戏
PieroPc7 天前
HTML5 Canvas 平台跳跃游戏
前端·游戏·html5
Swift社区7 天前
LeetCode 390 消除游戏 - Swift 题解
leetcode·游戏·swift