Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

创建玩家场景

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

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

节点结构

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

../../_images/add_node.webp

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

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

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

../../_images/lock_children.webp

保存场景。点击“场景 -> 保存”,或者在 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 资源,该资源是一个可显示的动画列表。要创建它,在“检查器”的 Animation 选项卡中找到 Sprite Frames 属性,然后点击“[空]”->“新建 SpriteFrames”。再次点击来打开 SpriteFrames 面板:

../../_images/spriteframes_panel.webp

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

../../_images/spriteframes_panel2.webp

玩家图像对于游戏窗口来说有点过大,需要缩小它们。点击 AnimatedSprite2D 节点,可以在检查器 Node2D 标签中,将 Scale 属性设置为 (0.5, 0.5)

../../_images/player_scale.webp

最后,在 Player 下添加一个 CollisionShape2D 作为子节点,以确定玩家的“攻击框”,或者说碰撞范围。CapsuleShape2D 节点最适合这个角色,那么就在检查器中“Shape”的旁边点击“[空]”->“新建 CapsuleShape2D”添加形状,使用两个控制柄,调整形状大小以覆盖精灵:

../../_images/player_coll_shape.webp

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

../../_images/player_scene_nodes.webp

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

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