组件 (Components)
Character Movement 组件
CharacterMovement 是ECM系统的核心,负责执行所有与角色移动相关的工作(也称为角色发动机)。例如:附加力(apply forces)、冲力(impulses)、限制(constraints),平台交互(platforms interaction) 等。
这与Unity自带的角色控制器类似,但又有点不同,ECM的角色控制器使用了Rigidbody物理。
变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Max Move Speed | 最大移动速度 | 该角色可以移动的最大横向(XZ平面)速度。 包括来自外部力量的移动,如滑动,碰撞等。 |
Max Rise Speed | 最大上升速度 | 沿Y轴上移的最大速度。 |
Max Fall Speed | 最大的下降速度 | 沿着Y轴下移的最大速度。 |
Use Gravity | 是否使用重力 | 启用/禁用角色的自定义重力。 如果启用,角色会受到自定义重力的影响。 |
Gravity | 重力 | 此角色的重力大小。 我们通过此字段手动设置重力,来进行更细致的调整和控制。 |
Slope Limit | 斜坡限制 | 当坡度大于此值时,角色会滑下斜坡; 当坡度小于此值时,角色会停留在斜坡上,不会下滑。 (以度为单位) |
Slide Gravity Multiplier | 滑动重力百分比 | 当角色从斜坡上滑下时,角色所受的重力的百分比。 |
</br>
Ground Detection 组件
这是一个抽象类(abstract class),负责执行地面检测(角色与地面接触的检测),并提供有关“地面”的信息,例如触地点(角色接触地面),地面法线(ground normal)等等。
如果你需要,你可以扩展此类来自定义您的地面检测方法。
包括三种地面检测方法,一种使用球体来表示角色的脚,第二种使用Box来表示角色的脚,以及最基础的用射线投射地面进行检测。
值得注意的是,SphereGroundDetection 是GroundDetection 组件中最强大的组件,也是唯一一个提供边缘检测(ledge detection)的GroundDetection组件,并且在大多数情况下你应该首选SphereGroupDetection。
Sphere Ground Detection 组件
此组件是扩展了GroundDetection 抽象类(abstract class),并使用Sphere(球体)来表示角色的“脚”。
这是所有类型的 GroundDetection 中,最强大的一个。也是唯一一个提供边缘检测(ledge detection)的GroundDetection组件,并且在大多数情况下应该成为你的首选
变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Ground Mask | 地面层 | 哪个层(Layer)是地面层(用于行走的地面(walkable))。 |
Center | 中心 | 局部空间中角色的中心位置(相对于它的pivot)。 这决定了射线投射(cast)的起点。 |
Radius | 半径 | 边界(bounding)体积的半径。 这代表角色的“脚”或底部的半径。 (推荐: 此值应该是你的碰撞体半径的90-95%) |
Distance | 距离 | 射线投射的距离。 推荐: 此值应比你的碰撞体的一半高度多10%(碰撞体的高度/2*1.1) |
Box Ground Detection 组件
此组件是扩展了 GroundDetection 抽象类(abstract class),并使用Box(长方体)来表示角色的“脚”。
变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Ground Mask | 地面层 | 哪个层(Layer)是地面层(用于行走的地面(walkable)) |
Center | 中心 | 局部坐标中角色的中心位置(相对于它的pivot)。 这决定了射线投射(cast)的起点。 |
Radius | 半径 | 边界(bounding)体积的半径。 这代表角色的“脚”或底部的半径。 (推荐: 此值应该是你的碰撞体半径的90-95%) |
Distance | 距离 | 射线投射的距离。 推荐: 此值应比你的碰撞体的一半高度多10%(碰撞体的高度/2*1.1) |
Axis Aligned | 是否轴对齐 | 确定该框是轴对齐还是应该跟随角色的旋转。 |
Raycast Ground Detection 组件
此组件是扩展了 GroundDetection 抽象类,并使用Sphere(球体)来表示角色的“脚”。
这是一种基本的、轻量级的地面检测方法。
RaycastGroundDetection组件只应在以下情况下才使用:地面大部分是平坦的,并且不需要SphereGroundDetection 提供的附加功能。
变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Ground Mask | 地面层 | 哪个层(Layer)是地面层(用于行走的地面(walkable)) |
Center | 中心 | 局部坐标中角色的中心位置(相对于它的pivot)。 这决定了射线投射(cast)的起点。 |
Radius | 半径 | 用不到(Not used) |
Distance | 距离 | 射线投射的距离。 推荐: 此值应比你的碰撞体的一半高度多10%(碰撞体的高度/2*1.1) |