Animal Controller文档——States

news/2024/11/14 9:59:09/文章来源:https://www.cnblogs.com/chenxiayun/p/18540911

Overview

States是动物控制的核心逻辑,使动物能够移动、坠落、跳跃、死亡等。

States的动画相互独立。例如,动物不能同时处于奔跑和跳跃,或飞行和游泳状态。

它们按优先级排序,优先级高的状态将优先尝试激活,之后才是优先级低的状态。

image

  • 如果一个高优先级状态是当前激活的状态,低优先级状态将不会尝试激活,除非当前激活状态允许退出。使用State.AllowExit()将允许低优先级状态再次有机会激活。
  • 因此,当动物处于飞行状态时,所有低优先级的状态如坠落、游泳或跳跃将不会激活,除非飞行状态调用AllowExit()。

Override Start State

允许动物控制器以自定义状态启动,而不是初始化为[Idle]状态。

如果希望动物以飞行状态开始,可以在此处设置飞行ID。
image

Clone States

image
此选项将在运行时克隆所有状态脚本资源,这样每只动物都会有独特的状态。

  • 如果您将动物用作主要角色,可以禁用克隆状态选项,并修改内部值。

所有状态共享通用参数,以便在状态的核心动画播放时或激活新状态或模式时轻松更改动物控制器的属性。

Animator

所有状态至少需要在Animator中有一个动画状态,即使不需要或没有动画,您也可以创建一个空的动画状态或使用现有的动画片段。

General

image

ID

状态的唯一ID,用于识别每个状态。当创建状态时,这些ID会自动添加。
image

  • 状态名称(例如,[Death])必须作为该状态主要动画的标签,否则控制器将无法正常工作。
    image

Priority

状态的优先级,值越高,激活的几率越大。

该值由动物控制器自动为每个状态设置,也可以在状态列表中进行修改。
image

State Profile

允许不同的状态使用方式,例如,可以设置两个飞行配置文件,一个是像钢铁侠一样飞行,另一个是使用扫帚飞行。

Enter Input

用于激活 State 的输入。该参数完全可选,因为某些 State 会自动激活,比如当动物接近水时 Swim 会激活,或当动物没有地面支撑时 Fall 会激活。

  • 输入的名称需要与 Malbers Input 组件中的 Input 项目名称匹配。
    image
    有些状态不需要输入激活,它们通过 TryActivate() 方法在内部自动激活。以下是一些示例:
  • Idle -> Movement 向量为 Vector3.Zero。
  • Locomotion -> Movement 向量不是 Vector3.Zero。
  • Fall -> 动物下方没有地面。
  • Swim -> 动物处于 Layer 为 Water 的触发器内。

还可以使用 MAnimal.State_Activate(StateID state) 来激活任何 State。比如Health状态为零时激活死亡状态(可以在 Stats 组件 -> Health Stat 中查看)。
image

Exit Input

如果有输入与该参数连接,则允许 States 退出。
image

  • 例如 Climb 状态可以在按下 Crouch 键时退出

Reset Input on Failed

如果 State 尝试通过输入激活但失败,可以通过切换此选项来重置输入值(提示 - 检查调试日志了解更多信息!)。

Always Forward

如果希望角色在此 State 中只能向前移动,可将此项设为 true,例如无尽奔跑类型的游戏。

Reset Last State

进入此 State 时,将重置上一个 State 的 Animator 参数为 -1。

Allow Exit From Anims

若要允许 State 退出,动画需要在 Animator 上使用 [Allow Exit Behaviour]。

这适用于需要退出动画的 State,使它们不会直接从主动画状态退出。
image

Can Transition to Itself

即使当前已是该 State,也能再次激活,例如双重跳或三重跳。

Exit on Main

设置为 true,以尝试在主动画状态下退出状态。例如,Falling 动画可以仅在 Fall 动画时尝试退出。

Enter Cooldown

退出后再次激活该 State 所需的时间。

Exit Cooldown

激活后退出该 State 所需的时间。

Try Loop

Try States 会在每 x 帧尝试激活。

Duration

保持该 State 激活的时间,之后会执行内部的 AllowExit() 方法 - 若设置为 0,则忽略此选项。

Can Strafe

允许角色在此状态中横移。

Strafe Animations

此状态有新的横移动画 - 如果设为 false,则不会更新带有 [StateOn] 参数的 Animator。

Movement Strafe

检测到移动时的横移倍数 - 数值越高,角色横移时的对齐速度越快。

Idle Strafe

没有移动时的横移倍数 - 数值越高,角色在静止时的对齐速度越快。

Tags

Tags 修改器属性会在 State 进入 Animator Controller 的 MAIN 动画时更改 Animal Controller 的主要特性。核心标签值为 ID 名称 - [Speeds]。

例如,当动物进入 Fall State 的 MAIN Fall 动画时,我们需要:
image

  • 禁用 Root Motion 和 Sprint。
  • 启用 Gravity。
  • 动物不能处于 Grounded 状态或使用自定义旋转。
  • 禁用 Ignore Lower States(允许低优先级 States 激活)。
  • 启用额外的位置速度。

Enter Tag

Animator 标签,用于标识 State 中的进入动画,例如 Fly 的 'TakeOff' 或 Swim 的 'EnterWater'。
image

Exit Tag

Animator 标签,用于标识 State 中的退出动画,例如 Fall 的 'Land' 或 Swim 的 'SwimClimb'。

Exit Frame

当设为 true 且动物从一个 State 切换到另一个时,上一个 State 会在进入新 State 的同时执行另一帧的逻辑。

Messages

当处于状态时,可以设置消息发送。

Use SendMsg

当发送消息时,设为 true 将使用 Unity 内置的 SendMessage,而不是 IAnimatorListener 接口。

Children

当发送消息时,会将消息发送给所有动物的子游戏对象。

Animation Tags (additional modifiers)

image
可使用此部分根据在 State 中激活的特定动画设置附加修改器,例如 FallEdge 或 Fall 状态中的 Landing,以便这些动画具有略微不同的修改器。

Limits

image
限制允许您在另一 State、Mode 或 Stance 正在播放时对 States 设置限制。

Sleep From State

如果当前激活的 State 在列表中,则该 State 不能被激活。

  • 例如:当动物处于 Fall、Fly 和 UnderWater 状态时,Jump State 被设置为 Sleep。
    image
    image
  • 查看 State 列表:Jump State 在 Fall 或 Fly 状态时设置为 [Sleep]。

Queue From

如果激活的 State 在队列列表中,则会将该 State 放入队列,直到动物退出激活的 State。

例如,如果动物在 Fall State 中,Death State 将被放入队列,并在 Fall State 结束时激活。

Reset From

如果该 State 退出,则直到列表中的一个 State 激活后才可再次使用。例如,可以禁用 Fly,并在角色使用 Idle 或 Locomotion 后重新启用。

Sleep From Mode

如果某个 Mode 正在播放(例如 Attack、Action),可以通过 Sleep from Mode 列表将 State 设置为 Sleep。例如:动物在攻击时不能跳跃。
image

  • 查看 State 列表:Jump State 在 Attack 播放时设置为 [SleepM]。

Sleep From Stance

如果一个 Stance 正在播放,可以在 Stance 播放期间将 State 设置为 Sleep。例如,在平衡状态(如在绳索上行走)中不能跳跃。

Allowed Stances

可以设置在此状态中允许播放的 Stances。保持为空以包含所有。

Debug

当编辑器处于 Play 模式时,会调用 State.Debug() 函数,每个 State 启用其 Gizmos 和日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832547.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源 - Ideal库 - 常用枚举扩展方法(一)

分享枚举操作常用扩展方法,适用正常枚举和位标志枚举。包括名称/描述转枚举、转枚举值或默认值等方法,并附上详细单元测试。代码库已上传,可直接使用Ideal.Core.Common。今天和大家享一些关于枚举操作相关的常用扩展方法。我们平时用的比较多的是正常枚举,同时还有加[Flags…

2024腾讯云双十一必抢清单:省钱、省心、省力的购买攻略

一、前言 大家好,我是 Neo!一年一度的双十一购物狂欢节又到了!在这个特别的日子,腾讯云也推出了超一、前言 大家好,我是 Neo!一年一度的双十一购物狂欢节又到了!在这个特别的日子,腾讯云也推出了超值的优惠活动。最近我正好在做自己的小程序项目,需要用到服务器,特意…

Pytest自动化发现测试数据并进行数据驱动-支持YAML/JSON/INI/CSV数据文件

需求在测试框架中,往往需要测试数据和代码分离,使用CSV或JSON等数据文件存储数据,使用代码编写测试逻辑 一个用例过程往往可以测试多组数据,Pytest原生的参数化往往需要我们自己手动读取数据文件,比较麻烦又略显混乱 我们如何能把数据文件按约定的目录和文件名存起来,文件…

IT Manager项目管理工具-最新版

为了解决项目管理的难点,过多纸质办公的问题,诞生了该系统。其中的价值点包括几大点: 公司组织架构管理;项目成员管理,项目分解,任务分配,时间进度,质量把控; 周报,月报,工时统计;查看项目成员工作饱和度;协助公司进行有效的项目成本控制 组织数据初始化 首先需要…

概率统计-常见分布的均值及方差

概率统计-常见分布的均值及方差 纯原创+老师的PPT总结部分,作二级结论

团队作业4-2

仓库地址:https://github.com/bitpurleclude/GDUT-Goofish.git这个作业属于哪个课程 (https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxT_rAhbZKO3TfjMmbv1B0Re5Fp2d0_QACha2ZoYZ4fxF-ZKCCAhfJl7B8mvCfesLYE02X8T6kx_2R8w0SR-ykrgDVRKW…

【nginx安全】Nginx日志安全分析脚本

Nginx 日志的重要性和必要性 我们知道 Nginx 属于是程序日志的范畴,相对于系统日志来说层级要低一些了,但对于站长来说是至关重要的。因为 Nginx 日志里记录着站点来访的所有信息,无论是正常访客还是恶意请求都会在日志里留下痕迹,比如:被采集、恶意刷流量、暴力破解、漏洞…

MethodImpl优化性能

参数解释 MethodImplOptions.AggressiveInlining:请求编译器在可能的情况下对方法进行内联。 MethodImpl:这是一个属性,允许开发者为方法指定特定的实现行为,比如请求内联、忽略栈追踪等。 内联的作用 内联的主要作用是提升性能,特别是在如下情况下: 消除方法调用开销:通…

五步快速搭建企业客户服务知识库

引言 在当今竞争激烈的市场环境中,高效、准确的客户服务已成为企业赢得客户信任与忠诚度的关键。一个完善的企业客户服务知识库,不仅能够显著提升客服团队的工作效率,还能极大增强客户的满意度与忠诚度。本文将详细介绍五步快速搭建并优化企业客户服务知识库的方法,并特别推…

基于FCM模糊聚类算法的图像分割matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)I_mean = func_median(Im1,Lwin);%% 将图像灰度按列排列 X = Im1(:); X_spatial = I_mean(:);% 初始化标签数组 I_clu…

2024.11.12总结报告(一本“英语八年级上册”TEST4 A完形填空 难度:2)

今日份错误:基本介绍:本题为完形填空选择题,一共10题,错误2题 基本考点:本题考查重点为翻译和理解,难点为语法和词汇 错误题目:(7)(10) 分析:(7) 本小题的错误原因为语法,理解中出现错误,具体为动词的过去式与过去分词并未熟练掌握,上下文的联系不够紧密,对文…

Alpha冲刺阶段博客

数字电路模拟游戏团队 Alpha冲刺阶段博客 一、Scrum Meeting 第六周会议记录 第七周会议记录 二、测试报告 Alpha阶段测试报告 三、习得的软工原理/方法/技能? 1. 迭代开发与持续集成 采用迭代开发模式可以极大的提高开发效率,降低开发成本,迭代开发是一种增量式的软件开发方…