创建玩家场景

项目设置到位后,我们可以开始处理玩家控制的角色。

第一个场景, 我们会定义 Player 对象. 单独创建Player场景的好处之一是, 在游戏的其他部分做出来之前, 我们就可以对其进行单独测试.

节点结构

首先,我们需要为玩家对象选择一个根节点。一般而言,场景的根节点应该反映对象所需的功能——对象是什么。单击“其他节点”按钮并将 Area2D 节点添加到场景中。

../../_images/add_node.png

Godot 将在场景树中的节点旁边显示警告图标。你现在可以忽略它。我们稍后再谈。

使用 Area2D 可以检测到与玩家重叠或进入玩家内的物体. 通过双击节点名称将其名称更改为 Player. 我们已经设置好了场景的根节点, 现在可以向该角色中添加其他节点来增加功能.

在将任何子级添加到 Player 节点之前,我们要确保不会通过点击它们而意外地移动它们或调整其大小。请选中该节点,然后点击锁右侧的图标;它的工具提示显示“确保对象的子级不可选择”。

../../_images/lock_children.png

保存场景。点击“场景 -> 保存”,或者在 Windows/Linux 平台上按下 Ctrl+S,在 macOS 上按下 Cmd+S。

备注

对于此项目,我们将遵循 Godot 的命名约定。

  • GDScript:类(节点)使用 PascalCase(大驼峰命名法),变量和函数使用 snake_case(蛇形命名法),常量使用 ALL_CAPS(全大写)(请参阅 GDScript 风格指南)。

  • C#:类、导出变量和方法使用 PascalCase(大驼峰命名法),私有字段使用 _camelCase(前缀下划线的小驼峰命名法),局部变量和参数使用 camelCase(小驼峰命名法)(请参阅 C# 风格指南)。连接信号时,请务必准确键入方法名称。

精灵动画

点击 Player 节点并添加一个 AnimatedSprite 节点作为子节点。AnimatedSprite 将处理我们玩家的外观和动画。请注意,节点旁边有一个警告符号。AnimatedSprite 需要一个 SpriteFrames 资源,是一个可显示的动画列表。要创建它,在“检查器”面板中找到 Frames 属性,然后点击“[空]”->“新建 SpriteFrames”。再次点击来打开 动画帧 面板:

../../_images/spriteframes_panel.png

左边是一个动画列表。点击“defalult”动画并将其重命名为“walk”。然后点击“新建动画”按钮,创建另一个名为“up”的动画。在“文件系统”选项卡中找到玩家图像——它们应该在你之前解压的 art 文件夹中。将每个动画的两张图像,playerGrey_up[1/2]playerGrey_walk[1/2],拖到对应动画的面板的“动画帧”处:

../../_images/spriteframes_panel2.png

玩家图像对于游戏窗口来说有点太大,所以我们需要缩小它们。点击 AnimatedSprite 节点并将 Scale 属性设置为 (0.5, 0.5)。你可以在“检查器”面板中的 Node2D 标题下找到它。

../../_images/player_scale.png

最后,添加一个 CollisionShape2D 作为 Player 的子项。它会决定玩家的“攻击框”(Hitbox),也就是碰撞区域的范围。对于这个角色而言,最合适的是 CapsuleShape2D 节点,那么请在“检查器”的“Shape”旁,单击“[空]” -> “新建 CapsuleShape2D”。调整两个大小句柄,让形状覆盖住整个精灵:

../../_images/player_coll_shape1.png

完成后, 你的 Player 场景看起来应该像这样:

../../_images/player_scene_nodes.png

修改完成后请确保再次保存场景.

在下一部分中,我们将向玩家节点添加一个脚本,以移动它并为其添加动画效果。然后,我们将设置碰撞检测,以了解玩家何时被某些东西击中。