Cave:入门指南
理解实体组件
Lesson 10 of 19 • 25 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
组件定义了实体可以做什么。
实体是容器。组件是附加在该容器上的特性。

本课介绍了作为初学者您将会看到的主要组件类型。您不需要记住每个选项。目标是识别模式:
> 当一个实体需要某个特性时,您通常会添加提供该特性的组件。
实体是由组件构建的
一个新的实体可以非常简单。
然后,随着您添加组件,它变得更有能力:
- 添加
Transform Component,它将在3D世界中有一个位置。 - 添加
Mesh Component,它可以变得可见。 - 添加
Rigid Body Component,它可以与世界碰撞。 - 添加
Python Component,它可以运行游戏逻辑代码。 - 添加
Logic Bricks Component,它可以运行可视逻辑。 - 添加
Audio Player Component,它可以播放声音。
这是正常的Cave工作流程:通过组合组件构建实体。
例如:
| 您想要的对象 | 可能的组件设置 |
|---|---|
| 火炬 | Transform, Mesh, Light, Audio Player. |
| 门 | Transform, Mesh, Rigid Body, Logic Bricks或Python. |
| 玩家 | Transform, Character, Camera, Animation, Python. |
| 健康拾取 | Transform, Mesh, Rigid Body触发器, Logic Bricks或Python. |
您不需要为每种情况都搜索一个特殊的对象类型,而是组合您需要的对象。
核心组件
一些组件非常常见,您会不断看到它们。
| 组件 | 主要用途 |
|---|---|
| Transform Component | 存储位置、旋转和缩放。 |
| Camera Component | 定义相机视图。 |
Transform Component
Transform Component 存储位置、旋转和缩放。

大多数3D实体都依赖于它,因为大多数对象需要存在于世界中的某个地方。当您在3D视图中移动、旋转或缩放实体时,您正在编辑它的变换。
许多其他组件依赖于变换:
- 光源需要一个位置。
- 网格需要一个位置。
- 相机需要一个位置。
- 3D声源需要一个位置。
Camera Component
Camera Component 定义相机视图。

当您希望一个实体作为游戏相机时,请使用它。
相机可用于:
- 第一人称游戏。
- 第三人称游戏。
- 俯视游戏。
- 菜单。
- 剧情片段。
- 特殊视图。
场景具有默认的场景相机,但游戏相机通常是带有Camera Components的实体。这使得它们在游戏过程中更易于移动、父级、动画、脚本或切换。
图形组件
图形组件控制玩家看到的内容。
| 组件 | 用于 |
|---|---|
| Mesh Component | 可见的3D对象。 |
| Light Component | 局部光源。 |
| Particle Component | 由许多小部分组成的视觉效果。 |
| Animation Component | 骨骼动画播放。 |
| Animation Socket Component | 将子实体附加到动画骨骼。 |
Mesh Component
Mesh Component 使用材料渲染一个网格。

用于:
- 道具。
- 墙壁。
- 角色。
- 门。
- 武器。
- 环境片段。
- 任何可见的内容。
网格组件通常引用一个网格资产和一个材料资产。网格提供形状,而材料控制表面外观。
Light Component
Light Component 向场景添加局部照明。

用于:
- 灯。
- 火把。
- 魔法光。
- 发光道具。
- 聚光灯。
场景的太阳和环境光影响整个场景。当您需要在特定位置获得局部照明时,将光组件放置在实体上。
Particle Component
Particle Component 创建重复的视觉元素和效果。

使用粒子:
- 烟雾。
- 火花。
- 灰尘。
- 火。
- 风。
- 瓦砾。
- 魔法效果。
粒子是有用的,因为您不希望每个火花或灰尘云都是一个完整的手动放置的实体。一个粒子组件可以生成和控制许多小视觉效果。
Animation Component
Animation Component 播放骨骼动画。

它与骨架和动画资产一起工作,并可以处理播放、混合、层和最终的动画姿势。
用于:
- 动画角色。
- 动画生物。
- 骨骼道具。
- 任何使用骨骼的导入动画网格。
Animation Socket Component
Animation Socket Component 将子实体附加到父动画实体的特定骨骼上。

用于:
- 剑。
- 枪。
- 盾牌。
- 头盔。
- 背包。
- 手持道具。
而不是每帧手动更新道具,插座会跟随所选骨骼。
物理组件
物理组件控制碰撞和物理运动。
| 组件 | 用于 |
|---|---|
| Rigid Body Component | 碰撞、物理对象、触发器。 |
| Character Component | 玩家和NPC角色运动。 |
| Physics Constraint Component | 将刚体连接在一起。 |
Rigid Body Component
Rigid Body Component 赋予实体物理行为。

用于:
- 静态碰撞。
- 动态对象。
- 物理道具。
- 像触发器的幽灵对象。
例如,墙壁可以使用静态刚体,以便玩家无法穿过它。一个可移动的箱子可以使用动态刚体,使其可以对力做出反应。
Character Component
Character Component 设计用于角色风格运动。

用于需要:
- 行走。
- 跳跃。
- 沿墙滑动。
- 处理坡度。
- 像角色而不是松散的物理对象移动。
通常这是控制角色的一个更好的起点,而不是一个普通的刚体。
Physics Constraint Component
Physics Constraint Component 将刚体连接在一起。
它对更高级的物理设置很有用,如:
- 铰链。
- 关节。
- 桥。
- 物理布娃娃设置。
- 连接的物理对象。
您不会立即需要它,但识别它是什么是好的。稍后,它可以在摆动门、悬挂物体或机械部件等事情上提供帮助。
世界和游戏组件
一些组件有助于构建世界或向玩家呈现游戏。
| 组件 | 用于 |
|---|---|
| Terrain Component | 户外景观和雕刻地面。 |
| Audio Player Component | 声音、音乐、氛围和3D音频。 |
| UI Element Component | 文本、按钮、面板、HUD和菜单。 |
Terrain Component
Terrain Component 创建和编辑地形。

用于户外关卡、景观、山丘、山谷、道路和大面积地面。
地形具有自己的编辑工具,后面会涉及。
Audio Player Component
Audio Player Component 播放声音或音乐。
它可用于:
- 音乐。
- 环境循环。
- 音效。
- 3D定向音频。
- 用户界面声音。
音频还可以通过脚本、Logic Bricks、时间线、用户界面回调和动画回调触发。
UI Element Component
UI Element Component 创建游戏界面元素。

用于:
- 文本。
- 按钮。
- 面板。
- 菜单。
- 健康条。
- HUD元素。
Cave中的UI也由实体构建,这意味着UI可以像游戏的其他部分一样使用层次结构、组件、属性和逻辑。
逻辑组件
逻辑组件使实体行为。
| 组件 | 用于 |
|---|---|
| Python Component | 可重用的Python游戏行为。 |
| Python Code Component | 小的内联Python行为。 |
| Logic Bricks Component | 可视化脚本图形。 |
| State Machine Component | 基于状态的行为。 |
Python Component
Python Component 将Python脚本资产附加到实体。

用于可重用的游戏逻辑,如:
- 门的行为。
- 敌人的行为。
- 交互。
- 用户界面逻辑。
- 游戏规则。
- 自定义系统。
Python Code Component
Python Code Component 将小的内联Python代码片段直接存储在组件中。

用于快速测试、小的局部行为或一次性原型。
对于更大、更可重用的逻辑,建议使用具有Python Component的Python Script资产。
Logic Bricks Component
Logic Bricks Component 将Logic Bricks资产附加到实体。

Logic Bricks是Cave的可视化脚本系统。它们让您通过连接节点而不是直接编写代码来创建行为。

用于触发器、简单交互、用户界面行为以及更容易以可视方式理解的游戏事件。
State Machine Component
State Machine Component 将一个层次状态机附加到实体。

状态机适用于具有明确状态的行为,例如:
- 静止。
- 行走。
- 追逐。
- 攻击。
- 逃跑。
- 死亡。
它们对敌人、NPC 和结构化的游戏逻辑特别有用。
车辆组件
Cave 还包括与车辆相关的组件。
如果您生成启动器车辆内容,您可能会看到这些组件。
| 组件 | 目的 |
|---|---|
| 车辆组件 | 将物理对象转换为车辆样式的主体。 |
| 轮子组件 | 定义车辆的轮子行为。 |
车辆组件与刚体和轮子组件一起工作。
轮子组件包含轮子相关的行为,例如悬挂、转向、轮子半径,以及该轮子是否为前轮。
实用组件配方
以下是一些关于组件组合的简单思路:
| 目标 | 组件配方 |
|---|---|
| 可见静态道具 | 变换 + 网格。 |
| 固体墙壁 | 变换 + 网格 + 刚体。 |
| 移动玩家 | 变换 + 角色 + Python + 摄像机。 |
| 带氛围的火把 | 变换 + 网格 + 光源 + 音频播放器。 |
| 菜单中的按钮 | UI 元素 + Python 或逻辑砖。 |
| 敌人行为 | 角色 + 动画 + 状态机或 Python。 |
这些不是严格的规则,而是起点。
随着您构建更多对象,您会更快选择合适的组件来完成任务。
其他组件
Cave 还有比本课涵盖的更多专业组件。
这是正常的。
在制作您的第一个场景之前,您不需要了解每个组件。现在,专注于这种有用的模式:当您为实体添加正确的组件时,它就会变得有用。