控制器 (Controllers)
如上所述,控制器的责任是确定如何移动角色,例如:根据用户输入(user input)、AI、动画(animation) 等去移动,并将该信息传递给CharacterMovement 组件, CharacterMovement 组件将作出响应来执行移动。
ECM提供3种不同的基础控制器(可扩展): BaseCharacterController:一种通用角色控制器 BaseAgentController: 基于 NavMeshAgent 类 的角色控制器 BaseFirstPersonController: 一个典型的第一人称 的角色控制器
建议使用ECM的方法是:扩展ECM提供的基本控制器 (请参阅包含的示例),创建一个从基本控制器派生出来的自定义角色控制器 (例如:CharacterMovement),并添加自定义代码以匹配您的游戏需求。因为,始终不会有人比你更了解你的游戏。
值得注意的是,建议使用ECM提供的基础控制器(但不是强制性的),它非常完美(如果你希望的话),选择您自己喜欢的ECM基础控制器并附上 GroundDetection 和 GroundDetection 组件,让您的角色进行移动。
Base Character Controller 组件
通用的角色控制器(也可以作为其他东西的控制器)。
它处理键盘输入(keyboard input),并允许跳跃(可变高度),然而,这个默认行为可以很容易地修改或完全替代,只需要覆盖派生类中的相关方法。
这是一个强大的类,其中包括角色运动(character locomotion)、可变高度跳跃(variable height jump)、无限制的空中跳跃(unlimited mid-air jumps)、支持根运动(root motion support)等等,并且为您提供一个强大的基础来开发自定义控制器。
变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Speed | 速度 | 最大移动速度 (单位m/s) |
Angular Speed | 旋转速度 | 最大旋转速度 (单位deg/s) |
Acceleration | 加速度 | 角色加速的速度(速度的变化率) |
Deceleration | 减速度 | 角色减速的速度 |
Ground Friction | 地面摩擦 | 影响移动控制的设置。 数值越高,方向变化越快。 如果 useBrakingFriction 的值是false, 这也会影响制动时更快停下的能力。 |
Use Braking Friction | 是否使用制动摩擦 | 是否使用制动摩擦( brakingFriction )来减缓角色的速度? 如果false,将使用 groundFriction 。 (备注:"制动"就是"刹车") |
Braking Friction | 制动摩擦 | 制动时的摩擦系数(没有输入加速度时)。 仅在useBrakingFriction为true时使用,否则将使用groundFriction。 |
Air Friction | 空气摩擦 | "未接地"时,应用的摩擦系数。 这与groundFriction类似。 |
Air Control | 空气控制 | 未接地时,角色可以使用的横向移动控制量。 0 ==没有控制,1 ==完全控制。 默认值为0.2。 |
Base Jump Height | 基础跳跃高度 | 初始跳跃高度(以米为单位) |
Extra Jump Time | 额外的跳跃时间 | 额外的跳跃时间 (例如,一直按住跳跃按钮),以秒为单位。 |
Extra Jump Power | 额外的跳跃力量 | 按住跳跃按钮时的加速度,单位为米/秒^2 |
Jump Tolerance Time | 跳跃容忍时间 | 在接触到地面之前多久,可以再次按下跳跃,并仍然执行跳跃。 建议值为0.05f到0.5f之间。(跳跃的冷却时间) |
Max Mid-Air Jumps | 最大空中跳跃 | 最大空中跳跃的值。 0 为禁用半空跳跃。 |
Use Root Motion | 使用根运动 | 是否使用根运动? 如果为true,则动画速度将覆盖移动速度。 这需要将RootMotionController 附加到Animator所在的游戏对象上。 |
Base Agent Controller 组件
基于 NavMeshAgent 类的角色控制器。它继承自BaseCharacterController,并将其扩展为受NavMeshAgent控制,并可以根据鼠标点击(单击移动)智能地移动。
像基础角色控制器(BaseCharacterController)一样,这种默认行为可以很容易地修改或完全替换为派生类。
**备注**: NavMeshAgent类是Unity自带的寻路功能变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Auto Braking | 自动制动 | 代理人(Agent)是否应该自动刹车以避免超出目的地点? 如果此属性设置为true,那么此代理会在靠近目的地时自动刹车。 (备注:制动就是刹车的意思) |
Braking Distance | 制动距离 | 距离目标位置多远时,开始制动。 例如:减速区域。 |
Stopping Distance | 停止距离 | 在距离目标位置多远时,立刻停止。 |
Ground Mask | 地面层 | 哪个 层(Layer)被认为是地面(行走区域)。 由地面点击检测使用。 |
Base First Person Controller 组件
基础的第一人称控制器。 它继承自BaseCharacterController,并扩展它以执行经典的FPS移 动。 和base character controller一样,这种默认行为可以很容易地修改或完全替换为派生类。
变量名 | 变量名的中文翻译 | 说明 |
---|---|---|
Forward Speed | 前进速度 | 向前移动时的速度。 |
Backward Speed | 后退速度 | 向后移动时的速度。 |
Strafe Speed | 横向速度 | 横向移动时的速度。 |
Run Speed Multiplier | 跑步速度乘数: | 跑步时的速度是行走时的多少倍。 |