Unity引擎学习笔记之【动画、动画器操作】

动画Animate

  • Animation是基于关键帧的动画系统,适用于简单的动画需求;
    而Animator是一种状态机驱动的动画系统,适用于更复杂的动画逻辑和交互式动画。

  • 通常,Animator组件更适合用于游戏中的角色动画控制,
    而Animation组件则更适合用于简单的动画效果。

一、旧版Animation(动画)组件

1.基本属性

  • 动画(Animation Clip)选择一个动画clip

  • Animations:添加动画列表

  • Play Automatically:自动播放

  • Animate Physics:在游戏中模拟物理效果和运动。编写脚本来控制游戏对象的物理行为,例如重力、碰撞、力的应用等。

    • 使用Animate Physics时,游戏对象的物理行为会在FixedUpdate函数中进行模拟,而不是在常规的Update函数中。这是因为在FixedUpdate中,物理引擎会以固定的时间间隔进行更新,以确保物理模拟的稳定性和一致性。

  • Culling Type(剔除类型):

    • 总是动画化(AlwaysAnimate):无论物体是否在相机视野内,动画都将播放并更新。这个选项会消耗更多的性能,因为即使物体不可见,动画仍然在播放。

    • Based On Renderers:根据物体的渲染器来确定是否需要播放动画。如果物体的所有渲染器都在相机视野内,则播放动画;否则停止动画。这个选项可以减少不必要的动画计算,提高性能。

  • Ctrl+6打开动画时间轴

    • 相当于逐帧动画,可以添加属性等

2.基本方法

  1. Play/Stop 播放/停止动画:

    • Animation.Play("animationName"):播放指定名称的动画。
    • Animation.Stop("animationName"):停止指定名称的动画。
  2. CrossFade 渐变切换动画:

    • Animation.CrossFade("animationName", fadeLength):从当前动画渐变切换到指定名称的动画,fadeLength为过渡时间。
  3. IsPlaying 判断动画是否正在播放:

    • Animation.IsPlaying("animationName"):返回指定名称的动画是否正在播放的布尔值。
  4. Blend 动画混合:

    • Animation.Blend("animationName"):将指定名称的动画与当前动画进行混合。
  5. Rewind 倒放动画:

    • Animation.Rewind("animationName"):将指定名称的动画倒放。
  6. Sample 动画采样:

    • Animation.Sample():在当前时间点采样动画,用于手动控制动画播放的进度。

二、新版Animator(动画机)

1.基本属性

  • 控制器:项目–创建–动画器控制器。可将创建的动画器控制器拖拽至控制器属性上。

  • Avatar:阿凡达,代表用户或角色的虚拟人物或数字化的形象。

    在使用Unity时,可以通过以下步骤创建Avatar:

    1. 创建人物模型:在Unity中创建一个3D模型,例如角色或怪物。确保该模型包含骨骼系统,以便后面的动画制作。

    2. 导入动画数据:将已经制作好的动画数据导入到Unity中,例如FBX文件或其他支持的格式。您可以使用Unity的Animation窗口来预览和编辑动画效果。

    3. 创建Avatar:在Unity的Project视图中右键单击导入的动画文件,选择"Rig->Create Avatar"来创建Avatar。Unity会自动为您生成默认的Avatar,并将其绑定到人物模型上。

    4. 配置Avatar:根据人物模型的具体情况,您可以进一步配置Avatar的参数。例如,您可以调整Avatar的身高、骨骼长度、旋转角度等属性,以确保动画效果正确地应用到人物模型上。

    5. 应用动画:将Avatar应用到人物模型上,以便在游戏中播放动画。您可以使用Animator组件来控制Avatar的行为和状态,例如切换不同的动画片段、设置动画参数等。


  • 应用根运动(Root Motion):允许使用动画的根骨骼来驱动角色或对象的移动。
    按照以下步骤进行操作应用根运动:

    1. 创建动画:在3D建模软件中创建角色的动画,确保动画中包含根骨骼的平移和旋转信息。例如,一个角色行走的动画应该包含根骨骼在世界空间中的移动。

    2. 导入动画:将动画导入到Unity中,并将其设置为角色的动画剪辑。确保在导入时启用"Import Root Motion"选项。

    3. 创建Animator组件:在角色对象上添加Animator组件,并将导入的动画剪辑分配给Animator Controller。

    4. 配置Avatar:确保角色的Avatar已经正确配置。在Avatar的"Motion"部分,选择"Default"或"Humanoid"选项, 以便使用根运动。

    5. 设置动画参数:在Animator Controller中创建适当的参数,例如"Speed"来控制角色移动的速度。

    6. 应用根运动:选择角色的Animator组件,在Inspector窗口中找到"Apply Root Motion"选项,并勾选它。

2.基本方法

    
public class AnimatorControllerExample : MonoBehaviour
{private Animator animator; // Animator组件的引用private static readonly int IsRunning = Animator.StringToHash("IsRunning"); // Animator参数名称的哈希值private void Start(){// 获取Animator组件的引用animator = GetComponent<Animator>();}private void Update(){// 按下空格键时,设置Animator参数的布尔值为true,播放动画if (Input.GetKeyDown(KeyCode.Space)){animator.SetBool(IsRunning, true);}// 松开空格键时,设置Animator参数的布尔值为false,停止动画if (Input.GetKeyUp(KeyCode.Space)){animator.SetBool(IsRunning, false);}}
}

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

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

相关文章

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和…

【考研408】计算机网络笔记

文章目录 计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题 计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题 物理层通信基础基本概念奈奎斯特定理与香农定…

PyCharm / DataSpell 导入WSL2 解析器,实现GPU加速

PyCharm / DataSpell 导入WSL2 解析器的实现 Windows的解析器不好么&#xff1f;设置WSL2和实现GPU加速为PyCharm / DataSpell 设置WSL解析器设置Interpreter Windows的解析器不好么&#xff1f; Windows上的解析器的确很方便&#xff0c;也省去了我们很多的麻烦。但是WSL2的解…

cesium-水平测距

cesium测量两点间的距离 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><el-breadcrumb-item&…

React16源码: React中处理hydrate的核心流程源码实现

hydrate 1 &#xff09;概述 hydrate 在react当中不算特别重要, 但是很多时候会用到的一个API这个 API 它主要作用就是在进入第一次渲染的时候&#xff0c;如果本身 dom 树上面已经有一个dom结构存在是否可以去利用这一部分已经存在的dom&#xff0c;然后去避免掉在第一次渲染…

千万级数据深分页查询SQL性能优化实践-京东零售技术团队

一、系统介绍和问题描述 如何在Mysql中实现上亿数据的遍历查询&#xff1f;先来介绍一下系统主角&#xff1a;关注系统&#xff0c;主要是维护京东用户和业务对象之前的关注关系&#xff1b;并对外提供各种关系查询&#xff0c;比如查询用户的关注商品或店铺列表&#xff0c;查…

贪心算法中关于重叠区间问题的感悟

在我这两天的感受中&#xff0c;对区间的排序是解题的关键&#xff0c;能够正确的排序就成功三分之一了。不过想到排序的方法很重要&#xff0c;有的是按照开始点从小到大排列&#xff0c;有的是按照从大到小&#xff0c;有的是按照结束节点排序&#xff0c;有的甚至再排过开始…

[晓理紫]CCF系列会议截稿时间订阅

关注{晓理紫|小李子}&#xff0c;每日更新CCF系列会议信息&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持&#xff01;&#xff01; 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新会议信息。 SAC (CCF C) Select…

物流平台架构设计与实践

随着电商行业的迅猛发展&#xff0c;物流行业也得到了极大的发展。从最初的传统物流到现在的智慧物流&#xff0c;物流技术和模式也在不断的更新与升级。物流平台作为连接电商和物流的重要媒介&#xff0c;其架构设计和实践显得尤为重要。 一、物流平台架构设计 1. 前端架构设…

VSCode Vue 必备插件

VSCode Vue 插件 1. Vue Language Features(Volar)官方插件 volar不仅支持 Vue3 语言高亮、语法检测&#xff0c;还支持 TypeScript 和基于 vue-tsc 的类型检查功能。需要注意的是&#xff1a;使用时需要禁用 Vetur 插件,Volar与它会有冲突 2. Vue VSCode Snippets 此插件为…

京东广告算法架构体系建设--高性能计算方案最佳实践 | 京东零售广告技术团队

1、前言 推荐领域算法模型的在线推理是一个对高并发、高实时有较强要求的场景。算法最初是基于Wide & Deep相对简单的网络结构进行建模&#xff0c;容易满足高实时、高并发的推理性能要求。但随着广告模型效果优化进入深水区&#xff0c;基于Transformer用户行为序列和Att…

OpenSSL:configure: error: OpenSSL library not found解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

项目02《游戏-05-开发》Unity3D

基于 项目02《游戏-04-开发》Unity3D &#xff0c; 【任务】UI背包系统&#xff0c; 首先将Game窗口设置成1920 * 1080&#xff0c; 设置Canvas的缩放模式&#xff0c;&#xff1a;这样设置能让窗口在任意分辨率下都以一个正确的方式显示&#xff0c; 设置数值&…

Mac安装Homebrew+MySQL+Redis+Nginx+Tomcat等

Mac安装HomebrewMySQLRedisNginxTomcat等 文章目录 Mac安装HomebrewMySQLRedisNginxTomcat等一、Mac安装Mysql 8①&#xff1a;下载②&#xff1a;安装③&#xff1a;配置环境变量④&#xff1a;外部连接测试 二、Mac安装Redis和可视化工具①&#xff1a;安装Redis01&#xff1…

【Linux系统 01】Vim工具

目录 一、Vim概述 1. 文件打开方式 2. 模式切换 二、命令模式 1. 移动与跳转 2. 复制与粘贴 3. 剪切与撤销 三、编辑模式 1. 插入 2. 替换 四、末行模式 1. 保存与退出 2. 查找与替换 3. 分屏显示 4. 命令执行 一、Vim概述 1. 文件打开方式 vim 文件路径&#…

美国纳斯达克大屏怎么投放:投放完成需要多长时间-大舍传媒Dashe Media

陕西大舍广告传媒有限公司&#xff08;Shaanxi Dashe Advertising Media Co., Ltd&#xff09;&#xff0c;简称大舍传媒&#xff08;Dashe Media&#xff09;&#xff0c;是纳斯达克在中国区的总代理&#xff08;China General Agent&#xff09;。与纳斯达克合作已经有八年的…

MySQL基础查询篇(4)-INNER JOIN和OUTER JOIN的区别

MySQL数据库中的INNER JOIN和OUTER JOIN是两种常用的连接查询操作&#xff0c;用于联合多张表中的数据。本文将详细介绍它们的区别和示例用法。 INNER JOIN INNER JOIN&#xff08;内连接&#xff09;是连接查询中最常见的一种方式。它基于两个或多个表之间的共同字段&#x…

将`List<String>`转换为`List<Long>`

将List<String>转换为List<Long> 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在Java中&#xff0c;将List<String>转换为List<Long>可以…

ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示词?没关系,ChatGPT帮你搞定

文章目录 ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示词&#xff1f;没关系&#xff0c;ChatGPT帮你搞定一、把场景描述转为镜头语言二、把镜头语言转换为Prompt三、把Prompt转换为图片 ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示…