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


*

相关推荐
黑客说11 分钟前
白日梦无限世界 各类型副本分析
人工智能·科技·游戏·娱乐
cyr___37 分钟前
Unity教程(二十六)技能系统 黑洞技能(上)基础实现
学习·游戏·unity·游戏引擎
棋子入局1 小时前
C语言制作消消乐游戏(4)
c语言·开发语言·游戏
张老师带你学2 小时前
Unity 机器人 humanoid +shader效果
科技·游戏·unity·游戏引擎·模型
2501_940041743 小时前
开箱即用的轻量级网页游戏Prompt
游戏·prompt
王杨游戏养站系统4 小时前
游戏站群系统
游戏·游戏下载站养站系统·游戏养站系统
棋子入局7 小时前
C语言实现消消乐游戏(6)
c语言·算法·游戏
上海云盾王帅7 小时前
2026游戏APP安全发布指南:告别DDoS恐慌,构建“免疫级”防护体系
安全·游戏·ddos
abant28 小时前
leetcode 763 未来跳跃游戏
算法·leetcode·游戏
聊点儿技术8 小时前
游戏分服总跨大区:如何用IP精准定位服务避免跨运营商分配?
tcp/ip·游戏·游戏安全·ip定位·ip离线库·ip精准定位·ip地址定位api