Animal Cotroller文档——Main

MAnimal Controller

动物脚本负责控制动物的所有运动逻辑。它管理所有的Animator和Rigid Body参数,以及动物可以执行的所有States和Modes。

Main Principles

Animal Controller(AC) 是一个动画框架控制器,支持根运动或就地动画,适用于任何生物或人形角色。它使用Rigidbody与物理世界互动,并使用Animator播放动画。

AC使用States、Modes和Stances在Animator上播放动画。

States

States是互不重叠的动画。例如,动物不能同时奔跑和跳跃,也不能同时飞行和游泳。

这些动画也需要一些内部逻辑来工作。

例如,对于行走,动物需要与地面对齐。对于游泳,动物需要与水面对齐。对于下落,动物需要受到重力影响。

Modes

Modes则是一组称为Abilities的动画,可以在State动画上播放。例如,动物可以在奔跑时攻击,在飞行时闪避,在下落时受到伤害等。

在大多数情况下,这些动画不需要应用任何特定逻辑,但如果需要自定义逻辑,可以应用Mode Modifier来改变Mode动画的一些效果。

Stances
Stances是State动画的变体。例如,运动动画(行走、奔跑)可以以不同方式播放。如果动物受伤,或者蹲伏/潜行,或者用两条腿站立,角色的行走方式可以不同。它仍然处于Locomotion State,但处于不同的姿态。

Main Components

Animal Controller需要Animator和RigidBody才能工作。这两个组件需要与Animal脚本处于同一层级。

Animator Component

  • 由于我们使用了RigidBody组件,建议将Update Mode设置为Animate Physics。
    image

Rigid Body

RigidBody组件允许Animal与场景中的其他刚体和静态对象进行交互。

  • 旋转将由Animal组件处理,因此通过代码,所有旋转将被锁定:
    image

Colliders

  • 对于所有生物,建议在生物的主要骨骼上添加Colliders,例如Spine和Head。不过,如果你愿意,也可以仅在Root GameObject上添加一个Capsule Collider。
    image
  • 如果在角色的Root上添加一个Main Collider,碰撞体必须不能接触地面,这会导致在斜坡上出现滑动问题。
    image

Layer

Animal Controller默认设置为Layer "Animal"。动物游戏对象层级中的所有游戏对象也应设置为相同的层。

攻击触发器、交互触发器以及其他不属于Animal本身的Colliders应设置为Ignore Raycast Layer。

Animator Controller

Animator Controller是Animal脚本的核心动画逻辑。它将与Animal脚本进行双向通信,以通知当前播放的动画以及Animal所处的State、Mode或Stance。
image
为了让Animal Controller正常工作,动画状态被标记为独特的Tags,以便查找和检查当前播放的动画是否与Animal组件命令的动画匹配。

Tags如(Locomotion、Jump、Idle、Fly、Fall等)。

这样,控制器就能知道Animator是否在活动State中播放正确的动画。
image

posted @ 2024-10-29 23:53  陈侠云  阅读(75)  评论(0)    收藏  举报
//雪花飘落效果