创建玩家场景
项目设置到位后,我们可以开始处理玩家控制的角色。
第一个场景,我们会定义 Player 对象。 单独创建Player场景的好处之一是,在游戏的其他部分做出来之前,我们就可以对其进行单独测试。
节点结构
首先,我们需要为玩家对象选择一个根节点。一般来说,场景的根节点应该反映对象的预期功能——即对象是什么。在左上角的“场景”选项卡中,点击“其他节点”按钮,向场景中添加一个 Area2D 节点。
添加 Area2D 节点后,Godot 会在场景树中该节点的旁边显示警告图标:
这个警告告诉我们 Area2D 节点需要一个形状来检测碰撞或重叠。我们可以 暂时忽略这个警告,因为我们将首先设置玩家的视觉效果(使用动画精灵)。当视觉效果准备好后,我们将添加一个碰撞形状作为子节点。这样,我们可以根据精灵的外观准确地调整和定位形状的大小。
使用 Area2D 可以检测到与玩家重叠或进入玩家内的物体。 通过双击节点名称将其名称更改为 Player。 我们已经设置好了场景的根节点,现在可以向该角色中添加其他节点来增加功能。
在将任何子节点添加到 Player 节点之前,我们要确保不会通过点击它们来意外移动它们或调整它们的大小。选择该节点并单击锁右侧的图标。其工具提示显示“将所选节点与其子节点组合。这样在 2D 和 3D 视图中点击子节点就会选中父节点。”
将场景保存为 player.tscn。点击场景 > 保存,或者在 Windows/Linux 上按 Ctrl + S,在 macOS 上按 Cmd + S。
备注
对于此项目,我们将遵循 Godot 的命名约定。
GDScript:类(节点)使用 PascalCase(大驼峰命名法),变量和函数使用 snake_case(蛇形命名法),常量使用 ALL_CAPS(全大写)(请参阅 GDScript 编写风格指南)。
C#:类、导出变量和方法使用 PascalCase(大驼峰命名法),私有字段使用 _camelCase(前缀下划线的小驼峰命名法),局部变量和参数使用 camelCase(小驼峰命名法)(请参阅 C# 风格指南)。连接信号时,请务必准确键入方法名称。
精灵动画
点击 Player 节点并添加(Windows/Linux 下按 Ctrl + A , macOS 下按 Cmd + A)一个子节点 AnimatedSprite2D 。 AnimatedSprite2D 将为我们的玩家处理外观和动画。 请注意,节点旁边有一个警告符号。 一个 AnimatedSprite2D 需要一个 SpriteFrames 资源,这是它可以显示的动画的列表。 确保已选中 AnimatedSprite2D ,然后在检查器的 Animation 部分找到 Sprite Frames 属性,并单击 [empty] -> 新建 SpriteFrames :
点击你刚刚创建的 SpriteFrames,以打开 "SpriteFrames" 面板:
左侧是动画列表。点击 default 并将其重命名为 walk。然后点击添加动画按钮,再创建一个名为 up 的动画。
在“文件系统”面板中找到玩家图像——它们就在你之前解压缩的 art 文件夹中。 将每个动画的两张图片拖到相应动画面板的**动画帧**侧:
playerGrey_walk1和playerGrey_walk2用于walk动画playerGrey_up1和playerGrey_up2用于up动画
玩家图像对于游戏窗口来说有点过大,需要缩小它们。点击 AnimatedSprite2D 节点,可以在检查器 Node2D 标签中,将 Scale 属性设置为 (0.5, 0.5)。
最后,在 Player 下添加一个 CollisionShape2D 作为子节点,以确定玩家的“攻击框”,或者说碰撞范围。CapsuleShape2D 节点最适合这个角色,那么就在检查器中“Shape”的旁边点击“[空]”->“新建 CapsuleShape2D”添加形状,使用两个控制柄,调整形状大小以覆盖精灵:
完成后,你的 Player 场景看起来应该像这样:
完成后,Area2D 节点上的警告将消失,因为它现在已经分配了形状,并且可以与其他对象进行交互。
修改完成后请确保再次保存场景。
在下一部分中,我们将向玩家节点添加一个脚本,以移动它并为其添加动画效果。然后,我们将设置碰撞检测,以了解玩家何时被某些东西击中。