首页 > 其他分享 >MAnimal Controller文档——Main

MAnimal Controller文档——Main

时间:2024-10-29 23:41:57浏览次数:4  
标签:动画 播放 MAnimal State Controller Animal Main Animator

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

标签:动画,播放,MAnimal,State,Controller,Animal,Main,Animator
From: https://www.cnblogs.com/chenxiayun/p/18514731

相关文章

  • 【Java】若以框架(ruoyi-master)——10.BaseController源码了解
    BaseController通用方法Web层的通用数据。所有接口继承此方法。里面有一些各个接口会用到的通用方法。比如分页、返回消息、设置或获取一些登录信息,某些操作的时候,将日志写入或返回。方法归类方法名称说明请求参数预处理initBinder()将前台传递过来的日期格式的字符......
  • C#学习 Main() 和命令行参数 (8)
    概述C#程序中只能有一个入口点。如果多个类包含Main方法,必须使用StartupObject编译器选项来编译程序,以指定将哪个Main方法用作入口点。classTestClass{staticvoidMain(string[]args){//Displaythenumberofcommandlinearguments.......
  • C语言的 main 函数具体作用是什么
    C语言的mAIn函数具体作用有:1.程序的起点和入口;2.程序的执行流程;3.接收命令行参数;4.程序的结束点;5.操作系统与程序的接口;6.提供程序的整体结构。main函数是C程序的起点和入口。当程序开始执行时,操作系统会首先寻找并调用main函数。1.程序的起点和入口main函数是C程序......
  • 为什么有些编程语言不建议用下划线作为标识符开头?标识符的特殊字符。为什么不指定编
    为什么有些编程语言不建议用下划线作为标识符开头?C/C++中两个下划线开头的标识符可能是预留给运行时库的保留字。写代码的时候,就建议最好不要用下划线开头的标识符,避免冲突。最怕的是,编译器没提示错误,运行时产生奇怪的结果。......
  • 在K8S中,有几种Controller控制器并说一下其工作原理及ingress-controller的工作机制。
    在Kubernetes(K8s)中,Controller控制器是核心组件,它们负责监控集群状态,并确保系统的期望状态与实际状态一致。以下是几种常见的Controller控制器及其工作原理,以及ingress-controller的工作机制的详细介绍:1.常见的Controller控制器及其工作原理ReplicationController作用:确保指......
  • SlugDungeon Apple Model-View-Controller
    SlugDungeonAssignment2Semester2,2024CSSE7030Duedate:25October2024,15:00GMT+101IntroductionInthisassignment,youwillimplementagameinwhichaplayermustescapefromadungeonofslugs.Unlikeassignment1,inthisassignmentyouwillbe......
  • Unity CharacterController基本属性
    CharacterController优点:已有的碰撞体最小移动距离限制:通常设置为0,如果角色试图移动到指示值以下,根本移动不了,目的是为了消除潜在的不需要的抖动皮肤宽度限制:避免卡在其他碰撞体中,在碰撞体进行碰撞检测拦截之前,皮肤宽度已经在这的基础上,提前做了一次碰撞拦截,但它会更柔和,允许......
  • DAPLINK 源码学习(1)BL 之 main() 函数
    目录bootloader主函数1sdk_init()2gpio_init()3config_init()4board_bootloader_init()5运行IF还是BL?6main_task()7总结bootloader主函数1)我们以stm32f103xb_bl为例,从bootloader项目的main()函数开始:(1)sdk_init():MCU初始化(2)gpio_init():USB相关引脚配......
  • 第6天:Intent和页面导航-补充材料——`MainActivity.kt`解读
    下面是对“第6天:Intent和页面导航”该文学习的更深层次的补充材料,对MainActivity.kt文件的理解。下面对`MainActivity.kt’文件中每一行进行详细解释:packagecom.example.intentdemo定义包名:这行代码指定了当前Kotlin文件所属的包。在Android项目中,包名通常是由反向......
  • 蓝牙Controller错误代码全面概览
    目录一、引言二、蓝牙错误代码概览三、错误代码详细描述3.1.UNKNOWNHCICOMMAND(0x01)3.2.UNKNOWNCONNECTIONIDENTIFIER(0x02)3.3.HARDWAREFAILURE(0x03)3.4.PAGETIMEOUT(0x04)3.5.AUTHENTICATIONFAILURE(0x05)3.6.PINORKEYMISSING(0x06)3.7.M......