Unity Animation、Animator 的使用(超详细)

这篇具有很好参考价值的文章主要介绍了Unity Animation、Animator 的使用(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 添加动画

选中待提添加动画的物体, 在 Animation 窗口下
animator怎么添加事件,Unity 学习笔记,unity注意:如果选中的物体无Animation/Animator组件,会自动添加Animator组件。
animator怎么添加事件,Unity 学习笔记,unity

2. Animation

2.1 制作界面

animator怎么添加事件,Unity 学习笔记,unity
animator怎么添加事件,Unity 学习笔记,unity 预览:启用/禁用场景预览模式。

animator怎么添加事件,Unity 学习笔记,unity 录制:启用/禁用关键帧记录模式。

animator怎么添加事件,Unity 学习笔记,unity 转到动画剪辑开头。

animator怎么添加事件,Unity 学习笔记,unity 转到上一个 keyframe(关键帧)。

animator怎么添加事件,Unity 学习笔记,unity 播放动画剪辑。

animator怎么添加事件,Unity 学习笔记,unity 转到下一个keyframe(关键帧)。

animator怎么添加事件,Unity 学习笔记,unity 转到动画剪辑末尾。

animator怎么添加事件,Unity 学习笔记,unity 当前帧。

animator怎么添加事件,Unity 学习笔记,unity 当前动画名字,下拉可以创建新的Animation动画。

animator怎么添加事件,Unity 学习笔记,unity 样本,每秒/分的帧数。

animator怎么添加事件,Unity 学习笔记,unity 添加关键帧。

animator怎么添加事件,Unity 学习笔记,unity 添加事件。

animator怎么添加事件,Unity 学习笔记,unity 时间轴。

animator怎么添加事件,Unity 学习笔记,unity 控制删除属性或增减键。

animator怎么添加事件,Unity 学习笔记,unity 简报。

animator怎么添加事件,Unity 学习笔记,unity 曲线。

2.2 制作好的 Animation 动画

animator怎么添加事件,Unity 学习笔记,unity

Length 长度(动画时长)
Loop Time 循环
Loop Pose 循环动作(使循环时头部尾部衔接平滑)
Cycle Offset 平滑度

2.3 添加和使用事件

animator怎么添加事件,Unity 学习笔记,unity

public class AnimEvents : MonoBehaviour
{

    private void Start()
    {
        // 创建一个事件
        AnimationEvent evt = new AnimationEvent();
        // 绑定触发事件后要执行的方法名
        evt.functionName = "PrintEvent";
        // 执行方法后要传入的参数
        evt.intParameter = 12345;
        // 设置事件关键帧的位置,当事件过了1.3秒后执行
        evt.time = 0.5f;
        // 设置目标动画剪辑
        AnimationClip clip = this.GetComponent<Animator>().runtimeAnimatorController.animationClips[0];
        // 绑定事件
        clip.AddEvent(evt);
    }

    private void TestAniEvent(string param)
    {
        Debug.Log("事件触发,参数是:" + param);
    }

    private void PrintEvent(int param)
    {
        Debug.Log(param);
    }
}

==注意:==脚本和 animator 所在的对象所处同一对象

3. Animator

3.1 制作界面

animator怎么添加事件,Unity 学习笔记,unity

3.2 一些参数解释

  1. Solo 和 Mute
    当一个动画有多个后续动画时:
    animator怎么添加事件,Unity 学习笔记,unity
    当该动画播放完后优先选择动作列表中最前(或者说最上的)的状态转移
    Solo:当设置了某个 Transitions 为 Solo 时,那么优先选择标记 Solo 的动画转移
    Mute:选择的状态转移被禁用
  2. ** Has Exit Time**
    是否有退出时间。简单理解:开启表示等待当前动画进行完才可进行下一个动画;关闭表示可以立即打断当前动画并播放下一个动画

3.3 动画参数

animator怎么添加事件,Unity 学习笔记,unity
animator怎么添加事件,Unity 学习笔记,unity
代码控制:

public class AnimControl : MonoBehaviour
{
    private Animator anim;
    private void Start()
    {
        anim = this.GetComponent<Animator>();
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.R))
        {
            anim.SetBool("BoolParams", true);
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            anim.SetBool("BoolParams", false);
        }
    }
}

animator怎么添加事件,Unity 学习笔记,unity

4. Animator中相关类、属性、API

4.1 类

AnimationClip: 动画片段,animation

属性/方法 含义
length 动画长度,单位为秒。(只读)
frameRate 对关键帧进行采样的帧率。(只读)
length / (1 / frameRate) 总帧率
AddEvent 将一个动画事件添加到该剪辑中

AnimatorStateInfo: 动画状态机状态信息

属性/方法 含义
fullPathHash 该状态的完整路径哈希
length 状态的当前持续时间
normalizedTime 整数部分为状态已循环的次数。小数部分为当前循环的进度百分比 (0-1)
speed 该动画的播放速度。1 表示正常播放速度

4.2 属性

属性 含义
speed 动画器的播放速度。1 为正常播放速度
runtimeAnimatorController.animationClips 返回所有动画 AnimationClip[]

4.3 API

方法名 含义
GetBool 返回给定布尔参数的值
GetFloat 返回给定 float 参数的值
GetInteger 返回给定整数参数的值
SetBool 设置给定布尔参数的值
SetFloat 将浮点值发送到动画器以影响过渡
SetInteger 设置给定整数参数的值
GetCurrentAnimatorClipInfo 返回给定层当前状态中所有 AnimatorClipInfo 的数组
GetCurrentAnimatorClipInfoCount 返回当前状态中 AnimatorClipInfo 的数量
GetCurrentAnimatorStateInfo 返回 AnimatorStateInfo,其中包含有关当前状态的信息
GetNextAnimatorClipInfo 返回给定层下一个状态中所有 AnimatorClipInfo 的数组
GetNextAnimatorClipInfoCount 返回下一个状态中 AnimatorClipInfo 的数量
GetNextAnimatorStateInfo 返回 AnimatorStateInfo,其中包含有关下一个状态的信息
Play 播放一个状态

4.4 几个关键方法

Animator.Play

void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
Parameters 参数 Description 描述
stateName 将要播放的动画状态名字。
layer 动画状态所在的层。
normalizedTime 将要播放动画状态的归一化时间(0-1,时间比例值)。

5. 动画播放和暂停控制

1. Animotor

// 播放
animator.Play("ani_name");
// 暂停
animator.speed = 0;
// 继续播放
animator.speed = 1;
//  重置到起始帧
animator.Play("ani_name", 0, 0f);

2. Animation文章来源地址https://www.toymoban.com/news/detail-714450.html

// 播放
animition.Play("ani_name");
// 暂停
animition["ani_name"].speed = 0;
// 继续播放
animition["ani_name"].speed = 1;
// 重置到起始帧
public void ResetAni(Animation ani, string name)
{
     AnimationState state = ani[name];
     ani.Play(name);
     state.time = 0;
     ani.Sample();
     state.enabled = false;
 }

到了这里,关于Unity Animation、Animator 的使用(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity简单操作:设置触发条件 切换Animator动画控制器 里面播放的Animation动画

    确保animator里面有多个animation动画剪辑,点击Animator里面[Parameters]添加触发条件   添加连线箭头并且 给箭头连线绑定触发事件  添加连线箭头并且 给箭头连线绑定触发事件  

    2024年02月04日
    浏览(59)
  • [Unity] 播放 Generic Animation 导致无法移动的解决办法:在 Animator 中勾选 Apply Root Motion

    我在使用 Animation Type 为 Humanoid 的 Animation 的时候是一切正常的 但是,自从因为 Humanoid 会导致手腕错误旋转问题,把 Animation Type 改成了 Generic 之后,我的人物就不能动弹了 测试发现,给 CharacterController 的输入是没有问题的,但是 CharacterController 所控制的父级 GameObject,也就是

    2023年04月08日
    浏览(37)
  • 【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在日常开发中,常常会遇到要控制动画的播放、暂停和倒放的情况。 这篇文章就总结一下, Animation

    2024年02月02日
    浏览(96)
  • Unity为人物模型 添加动效Animator

    码字不易,转载请注明出处^ o ^ Unity导入一个人物模型后,一般还需要让它动起来。并且,还需要有一定的状态管理,比如按A键就做跑的动作,按B键就做打人的动作,等等。 本文就从无到有,讲一下如何快速导入一个人物模型,然后动起来。 本文着重讨论的是人物模型,因

    2024年02月02日
    浏览(32)
  • Unity 制作动画 - Animation 的使用

    1. unity 顶部导航栏点击 Window  Animation 打开 Animation 窗口 通过这个窗口可以创建、编辑动画,也可以查看导入的动画。Animation 窗口同一时间只能查看、编辑同一段Clip中的动画 2. 选中 Hierarchy 面板中的节点, 也就是要制作动画的物体,该物体上没有动画,可以点击Animation窗口

    2024年02月15日
    浏览(42)
  • (Animator详解二)Unity Animator的基本属性

    在Inspector下 Animator的第一项为状态机的名称(注意:这里的名称不是动画名称) Tag 当前动画的Tag标签,可以通过Tag值来处理一些逻辑 Motion :动画片段的名称 Speed :动画的播放速度:1表示正常播放,                                            speed 1 表示加

    2023年04月09日
    浏览(49)
  • [Unity] 使用 Animation Rigging 让角色双手正确持握枪械

    最近在制作角色状态机时,发现角色不同持枪动作下,握枪位置总是不能统一,例如瞄准时双手已经握住枪械:  但静态时左手却错位握不住:  于是找到了使用Animation Rigging做骨骼约束,下面是具体的解决方法: 打开Window/PackageManager/UnityRegistry,搜索Animation Rigging,安装并引

    2024年02月04日
    浏览(75)
  • Unity Animator cpu性能测试

    场景中共有4000个物体,挂在40个animtor 上,每个Animator控制100个物体的动画。 Unity Profiler. unity 2019.4.40f1 手机 没有挂在Animator时: Enable 状态: Play状态: 挂载Animator,但处于disable 状态: 以上现象,可以看出Animator 没有挂载和挂载为启用时,都会有部分cup处理,但时间都很短(

    2024年02月08日
    浏览(47)
  • Unity animator动画倒放的方法

    在Unity中, 我们有时候不仅需要 animator 正放的效果,也需要倒放的效果。但我们在实际制作动画的时候可以只制作一个正放的动画,然后通过代码控制倒放。 实现方法其实很简单,只需要把 animator 动画的 speed 设置为-1即为倒放, speed 设置为1即为正放: 比如我制作了一个从

    2024年01月23日
    浏览(45)
  • Unity Animator获取当前播放动画片段

    Animator获取当前播放片段,获取错误,跟当前播放的片段不一致的原因。 一般使用下面API,获取当前动画机播放片段: 这里有一个机制,如果上一句代码是播放一个动画片段,下一句代码立即去获取当前播放片段信息,是获取不到的,需要等待几十ms的延迟,才能正确获取到

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包