- 前言:
- 我是根据b站上的视频进行学习,并且总结写下笔记,然后做此分享。笔记非常详细以至于你可以通过查看文章进行快速学习并且制作出游戏出来。当然视频学习的链接我也放在下面了:
- 视频学习:https://www.bilibili.com/video/BV1Nd25BNEA6?spm_id_from=333.788.player.switch\&vd_source=078d5d025b9cb472d70d8fda1a7dc5a6\&p=15
- 音频/美术资源包下载: https://pan.baidu.com/s/1mY05SbG3XFUpn-qiKxDRhw?pwd=b6bg
- 完成目标
-
该实现过程的核心目标是在Godot中创建并整合玩家角色场景,具体完成:
-
物理基础:用
CharacterBody2D+圆形碰撞体搭建可脚本控制的物理角色。 -
动画配置:通过
AnimatedSprite2D导入并设置待机动画(12帧/秒、循环播放)。 -
视觉优化:调整纹理过滤为
Nearest消除模糊,微调角色与阴影位置。 -
阴影与层级:用
Sprite2D添加阴影,通过y-sort控制显示顺序(无需改z-index)。 -
场景整合:重命名根节点为
player,拖入主场景并调整初始位置,保存为player.tscn。
- 实现过程:
- 然后我们需要创建一个新的场景,点击加号创建一个新的场景,然后选择添加其他节点,然后这个节点就是 CharacterBody2D,这个是一个可以通过脚本代码进行控制行为的物理体,值得注意的是它虽然是一个物理体但是不会进行遵循物理规律进行自动移动

- 然后为了为了让CharacterBody2d节点与物理世界互动,我们需要创建一个碰撞体形状,也就是这个玩家节点创建好之后的黄色警告的由来

- 我们需要为其添加一个CollisionShape2d子节点

- 然后我们可以看到新建的子节点还是有一个黄色警告,这个是因为我们创建这个物理碰撞体之后我们还需要进行设置一下是什么形状

- 我们这里来到新建节点的右侧检查器这里找到shape的属性来设置,碰撞体的形状,这里我们设置形状为圆形,使用圆形的一大好处就是不用但是被卡在了尖锐的角角

- 接下来让我们进行创建玩家角色动画,我们的角色在执行不同动作时会播放不同的动画AnimatedSprite2d节点可以帮助我们播放动画,所以我们这里需要在玩家场景下创建一个新的节点

- 创建之后呢这个动画精灵节点一样会有一个黄色警告,这个是因为我们需要去设置它的一个精灵帧

- 选中动画精灵节点,然后来到右侧检查器的Sprite Frames,进行新建一个

- 然后我们来到观察窗的下方精灵帧的设置,点击那个网格图标,我们找到animations文件夹下的玩家待机动画

- 我们可以看到玩家的待机动画有四行,分别是上下左右的动画,我们点击右边的自动分割,然后就会变成合适4行7列

- 然后我们选择第一行,在鼠标选择第一个之后从做往右滑,之后我们就可以在观察窗的下方看见我们导入的7帧啦

- 然后我们会发现我们导入的玩家角色有点模糊,我们来到左上角点击项目点击项目设置这里,弹出窗口之后我们来到渲染选择纹理,在纹理的默认纹理过滤属性那里选择Nearest

*

*

- 接下来我们的默认动画是每秒5帧,我们需要修改为每秒12帧,以及进行循环播放,还有设置打开游戏开始时进行自动播放

- 然后我们为玩家角色添加一个阴影,因为阴影只是一个静态的图像,我们右键点击玩家的根节点,选择添加一个Sprite2D节点

- 新建好这个2d精灵节点之后,我们需要打开animation文件夹中,将阴影文件拖动到这个2d精灵节点的检查器中的纹理属性中

- 然后我们需要在让我们在不改变AnimatedSpy2D节点位置的情况下将角色上移,所以我们就来到2d动画精灵节点的精灵帧那里进行修改位置,我们点击精灵帧(不要点到旁边的下拉了),然后点击那个offset,然后进行修改y轴位置,改为-20这样子就是向上进行偏移了

- 然后我们会发现阴影在角色的前面,因为渲染是根据从下往上,以及z-index都为0.然后呢我们不采用去改变这2个的东西去修改显示的前后位置。在godot中,我们可以使用y-sort的功能进行实现这一点,一般在项目中我们都会使用这个功能进行调整显示顺序,只有那些必须要显示在最前面的才会使用z-index,比如说ui系统。我们选择玩家的根节点,找到右边检查器中的ordering排序,启用y-sort。然后这个根节点下面所有子节点都会受到影响。这个y排序就是根据y轴位置进行排序,y轴位置较小的节点会位于y轴位置较大的节点后

- 所以我们来到精灵节点,选中之后点击右侧的检查器,然后点击transform,选择修改position的y轴位置改为-1,然后就会在观察窗看到阴影变到角色的下面。

- 然后因为这里发生了偏移(不在中心位置了),我们需要在纹理那里进行校正一下,在2d精灵节点的检查器的纹理那里进行修改一下y轴的位置改为1

- 然后我们还需要重命名一下,命名那个2d精灵节点为Sprite2D_Shadow

- 然后我们来修改一下之前设置好的圆形碰撞体形态的大小,修改它的半价为4px,我们的玩家角色将仅基于这个圆形区域与游戏世界中的墙壁发生碰撞

- 另外我们修改一下根节点的的名称改为player

- 然后我们把玩家节点拖动到主场景的根节点下,我们就可以在主场景的观察窗在0,0坐标系上看我们的玩家角色

- 然后我们打开移动模式,移动玩家的角色在地图中间,这里需要注意的是,记得拖拽上去的玩家节点要在瓦片地图层下面

- 或者直接打开transform进行修改玩家角色的位置,这里修改的是500px,700px

- 然后我们点击保存,然后重命名为player.tscn
