描述 (Description)

Easy Character Movement插件遵循 单一职责原则 (single responsibility principle)

所以,在理想情况下,每个类只负责一项任务。因此,Easy Character Moment系统由几个具有特定任务的类组成,其中最重要的是 CharacterMovement 组件。

(备注:你可以把这里的"任务"理解为"功能")


CharacterMovement 组件是ECM系统的核心,负责执行所有与角色移动相关的工作(又名: 角色发动机(Character motor))。例如附加力(apply forces)、冲力(impulses)、限制(constraints),平台交互(platforms interaction) 等。

这与Unity自带的角色控制器类似,但它又与Unity的角色控制器不同,因为ECM的角色控制器使用了Rigidbody物理。


ECM已经被开发成易于使用,但是为了操作 CharacterMovement ,我们需要1个Rigidbody 组件、1个Collider 组件和GroundDetection 组件 (Sphere、Box、Raycast 或者Custom都行) 与CharacterMovement 位于同一个GameObject(游戏物体)上。


以下是一个示例 (你的角色应该遵循的一组组件 的示例)

img/006.png



说完 CharacterMovement 组件,我们来说GroundDetection 组件(包括Sphere、Box和Raycast), 它将执行地面检测(监测GroundDetection自身与地面发生的碰撞),并将这些信息提供给CharacterMovement 组件。


值得注意的是,无论您使用哪种角色物理碰撞体(Sphere Collider、Box Collider等),您都可以使用任何 GroundDetection (Sphere、Box、Raycast 或者 Custom) 组件。

例如,你完全可以使用CapsuleCollider 作为角色的物理碰撞器,然后再加个BoxGroundDetection 组件。这样的话, Collider 组件进行碰撞检测;而 GroundDetection 组件负责收集碰撞信息,传递给CharacterMovement 组件。


我想指出的是,SphereGroundDetection 是所有 GroundDetection 组件中功能最强大的,也是唯一提供边缘检测(ledge detection)功能的, 在大多数情况下应该首选SphereGroundDetection



首先,控制器(例如:BaseCharacterController)决定角色如何移动,例如:根据用户输入(user input)、AI、动画(animation)等去移动,并将该信息提供给执行移动的CharacterMovement 组件。


值得注意的是,CharacterMovement 组件本身不会执行任何操作,您必须调用它的Move方法才能实际移动角色。

results matching ""

    No results matching ""