项目设置完之后,我们就可以开始处理玩家控制的角色。
这里我们将玩家放在一个单独的场景当中,这样做的好处是在游戏的其他部分做出来之前,我们就可以对其进行单独测试。
节点结构
场景是一个节点树结构,因此一个场景需要有一个根节点,那么一般原则是场景的根节点就应该要反映对象所需的功能,也就是该使用什么样的节点对象!
这里的根节点我们选择添加一个Area2D
节点作为角色的根节点!
创建好之后,选中根节点按F2可以对节点名称重命名,我们将其改为Player
。
Ctrl+S保存场景或点击菜单中场景下拉点击保存场景,将场景保存到scenes目录下!
此时节点右侧应该会看到一个黄色的感叹号,我们可以点击这个黄色的感叹号!
点击之后会弹出下图所示的警告说明框,里边详细解释了原因!
Area2D节点
Area2D节点是2D空间的一个区域,也就是说他是平面当中的一个区块,它能够检测到到物理对象CollsionObject2D
的进入或退出!由一个或多个 CollisionShape2D
或 CollisionPolygon2D
子节点定义,同时也会记录哪些碰撞对象尚未退出,即存在重叠!
官方文档:Area2D — Godot Engine (4.x) 简体中文文档
对场景节点编组
为了防止意外的改变子节点的大小或位置,我们可以对其进行编组。即使当你不小心选中了子节点也会同时选择父节点!
这里我们切换到2D视图可以看到锁子旁边的图标,这个就是组合图标,我们选中Player节点,他就是可点击状态,点击之后就会对其进行编组,场景右侧会出现该图标,则证明编组成功!
精灵(角色)动画
为Player
节点添加一个子节点AnimatedSprite2D
节点。
注意创建好之后同样节点右侧有个黄色的感叹号,同样的方法我们也可以点击查看警告说明。它会提示我们说必须在"Frames"属性中创建或设置SpriteFrames资源,让AnimatedSprite2D显示帧。
我们在编辑器右侧找到Animation
,展开可以看到Sprite Frames
选项右侧,点击下拉箭头选择新建SpriteFrames
!
选择该选项后,点击选中该选项框,会看到编辑器底部出现一个动画帧编辑器。
左边是一个动画列表。点击“defalult”动画并将其重命名为“walk”。然后点击“添加动画”(绿色+号)按钮,创建另一个名为“up”的动画。
在文件系统的assets目录下找到玩家动画图像,将每个动画的两张图像, playerGrey_up[1/2]
和 playerGrey_walk[1/2]
,拖到对应动画的面板的“动画帧”处:
玩家图像对于游戏窗口来说有点过大,需要缩小它们。点击 AnimatedSprite2D
节点,可以在检查器 Node2D
标签中,将 Scale
属性设置为 (0.5, 0.5)
。
最后,在 Player
下添加一个 CollisionShape2D 作为子节点,以确定玩家的“攻击框”,或者说碰撞范围。
CollisionShape2D 节点最适合这个角色,此时他也有一个黄色的感叹号警告,提示该节点必须有形状才能工作。
那么就在检查器中“Shape”的旁边点击“[空]”->“新建 CapsuleShape2D”添加形状,使用两个控制柄,调整形状大小以覆盖精灵:
箭头所指的就是控制饼,拖动即可调整大小,最后我们的Player场景看起来应该像这样:
做完之后,记得保存场景。
下一章节,我们将向玩家节点添加一个脚本,以移动饼为期添加动画效果。然后,我们将设置碰撞检测,以了解玩家何时被某些东西击中。