在Unity3D中控制动画播放

2023-10-26

用Unity3D也算是好久了,但是每次做项目总还是能学到新的东西。这次做一个TPS的项目就遇到了这样一个问题,如何同时在上下半身播放不同的动画?解决方法其实是很简单,但由于对于动画资源的了解不足导致问题不断,最后是彻彻底底的研究了一遍Unity3D的动画系统(Legacy),虽然4.0出了新的动画控制系统,使用了一下功能相比原来确实强大不少,但还是将这次对于原先的动画系统的学习总结记录下来,毕竟这些动画的概念与策略是通用的,而且因为4.0在mac上目前貌似还没有破解所以项目还是得在3.5上做。相信对于深入理解新的动画系统也会很有帮助。

一、Unity3D动画系统相关类

1.1 AnimationClip

AnimationClip是Unity3D中播放动画的最基本对象,通过FBX导入的各个动画对象其实就是一个AnimationClip。这个类已关键帧的形式记录了骨骼关节在各个时间节点上的位置、旋转信息,根据帧频率frameRate结合播放模式wrapMode通过插值计算即可播放出连续的骨骼动画。

1.2 AnimationState

每个AnimationState包含了一个AnimationClip,并记录这个动画片段的一些播放控制属性,实际上是一个AnimationClip的包装器。

其中比较重要的参数有layer,weight, enabled, speed, blendMode这几项。这些参数的具体含义将在自定义混合动画控制中详细解释,在简单的动画控制时并不需要对AnimationState进行直接操作。

1.3 Animation

Animation是Unity3D的动画播放控制组件,包含了一系列的AnimationState对象,提供各种动画播放及控制方法。常用方法有Play(), CrossFade(), Stop()。在脚本中通过animation即可直接引用同一物体上的Animation控件。


二、简单动画播放控制

所谓简单动画播放控制就是同一时间只有一个动作,比如Standard Assets中的那个水管工,静止idle,走walk,跑run,跳跃jump,攻击attack这些动作都是全身动作,同一时间只应该做一种动作,只有在动作切换时需要将两种切换动作进行混合以达到平滑过渡的效果,以上的操作使用Animation提供的CrossFade()方法即可达到。无论是CrossFade还是Play理论上都只需要在切换动画时调用一次即可,当然重复的调用并不会影响动画的播放,当Unity3D检测到当前播放的动画与函数调用使用的动画一样后会忽略该次调用。


三、自定义混合动画

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Unity3D中控制动画播放 的相关文章

  • 如何为 QVBoxLayout 小部件的隐藏/显示设置动画

    I have this horizontal layout of a QWidget subclass using QHBoxLayout 我希望顶部小部件以滑动动画隐藏 显示 我读过了本文 https qt project org for
  • 卡兹马兹动画

    我正在寻求帮助 我想在 Matlab 上为 Kaczmarz 方法制作动画 它的方法允许通过在超平面上的串行投影解向量来找到方程组的解 该解向量由系统方程组给出 我想制作该矢量移动的动画 就像该点在投影矢量上一样 System of equ
  • 如何根据控件的属性(Top/Tabstop)设置WPF动画BeginTime

    我有一个 WPF 应用程序 它在垂直堆栈面板中具有一系列按钮 类似于 DVR 菜单的外观 我想出了如何制作一个动画 当每个新的菜单页面加载时 按钮 控件全部 unfade fall deblur 无论什么 都存在 这很好 但有点太统一了 我
  • 增大/缩小 WPF 动画

    在 WPF 中 当用户获得焦点时TextBox 我想要一些动画 可以使TextBox变成多行并使其Width更大 当他打字时 并且当焦点丢失时 TextBox恢复到原来的大小 尺寸未知 另外 最终 TextBox需要在 WPF 内DataG
  • Android 6.0 Marshmallow:片段动画出现奇怪的错误

    我在应用商店中的一个应用程序在 Android 5 0 上运行得非常好 但自从今天我将我的设备升级到 6 0 后 我遇到了奇怪的错误 我将其范围缩小到片段过渡动画 ftrans setCustomAnimations inAnim outA
  • CSS背景位置从右到左动画

    我正在尝试为背景图像设置动画 以便图像从右到左显示 我使用的图像的宽度大于背景所在的 div 容器 启动时 背景如下 background url img zeppelin png background repeat no repeat b
  • 在特定时间段内使用 JavaScript 更改 HTML 元素的背景颜色?

    我有大约 26 个 html 元素 我希望它们在 JavaScript 中具有以下效果 有可能做这样的事情吗 我试图这样做 var j 2000 for i 1 i lt 26 i setInterval function document
  • 如何在 Unity3D 中编辑动画

    我在层次结构中选择了一个带有动画组件的游戏对象 不是动画师 而是一个简单的动画 然后我尝试通过从 窗口 菜单中选择 动画 来打开动画窗口来编辑它 问题是动画窗口变灰 建议我创建一个新动画 但我只想编辑我已经拥有的一个 要编辑动画 您需要选择
  • 在 WPF 动画中,将属性 BeginTime 设置为静态资源

    我想要做的是使用资源定义我的动画的所有开始时间 例如 我想要
  • 需要用C#创建一个动画GIF

    我尝试过各种解决方案 例如 http bloggingabout net blogs rick archive 2005 05 10 3830 aspx http bloggingabout net blogs rick archive 2
  • 多个目标名称具有相同的动画

    只是一个疑问 我的 WPF 应用程序中有三个图像 我将为这三个图像提供闪烁效果 所以我给出了这段代码
  • HTML5 Canvas 动画偶尔出现抖动/犹豫/卡顿

    在 Firefox 11 中 我在使用 HTML5 画布和翻译的一些基本动画中偶尔遇到抖动 犹豫 口吃的情况 请看下面的例子 http jsfiddle net ACRdx http jsfiddle net ACRdx 上面示例中的配置似
  • android 旋转动画

    我正在尝试制作旋转图像动画 我需要旋转一个图标itself就像他们在进度条中所做的那样 但我得到的是围绕一个圆圈旋转的图像 这是我的动画代码
  • 从中心生长[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我一直在尝试让底部的圆圈在 Firefox 中增长 需要添加其他前缀 仍在开发中 他们表现得很好 但我的目标是让他们从中
  • iPhone 就像在 Silverlight ListBox 上滚动一样

    我需要一个具有类似 iPhone 功能的 Silverlight 列表框 也就是动画滚动 点击拖动滚动 在鼠标释放事件之后 滚动将根据拖动的 速度 继续进行一段时间 我搜索过 没有找到提供此功能的控件供应商 那么问题是我应该如何构建它 我需
  • 创建较慢的过渡。 TransitionManager.beginDelayedTransition();太快了

    我正在创建一个过渡 当单击按钮时 将执行以下方法 该方法改变了图像视图的大小和位置 并将其淡出 我在用TransitionManager beginDelayedTransition is too fast 放慢转变速度 但它仍然进展得太快
  • 如何在编辑器中将动画曲线更改为线性?

    我向轮子添加了旋转动画 但轮子旋转不顺畅 我发现原因是因为旋转动画的曲线不是线性的 然而 在尝试了编辑器中的几乎所有按钮和选项后 我找不到使动画曲线成为线性的方法 有谁知道如何在统一编辑器中获取带有线性曲线的动画 我自己找到了解决方案 而且
  • Jquery 代码可以在 Chrome 中运行,但不能在 Firefox 中运行

    我有这段代码 当单击它时会显示几个 div 然后单击另一个链接后它们就会隐藏 我正在尝试让它在 Firefox 中显示 这在 js 中可能不是问题 但非常感谢所有帮助
  • 动画 GIF 作为 THREE.js 中的纹理

    我正在寻找一种在 THREE js 中使用 GIF 动画作为纹理的方法 我目前可以加载纹理 甚至是 GIF 格式 但它无法播放动画 有什么办法可以做到吗 我发现了一些像这样的链接 https github com JordiRos GLGi
  • Javascript:如何实现异步函数队列(无需库)

    我一直在搜索谷歌和SO 但由于某种原因我很难解决这个问题 只是强调一下 我不想加载像 JQuery 这样的库 因为我不需要它的大部分内容 当我could使用动画库 我已经构建了我自己需要的几个函数 其中一些甚至不是您在库中找到的标准动画 所

随机推荐

  • php实现ETH原生签名交易sendRowTransaction

    文章目录 1 安装GMP 之前需要先安装m4 不然会出错 2 然后ubuntu安装gmp 3 然后安装PHP gmp扩展 4 安装scrypt 扩展 4 撤销sudoers文件写权限 命令 参考文章链接 1 安装GMP 之前需要先安装m4
  • window.location.href跳转带有token的新链接时显示空白页

    问题 从A平台跳到B平台并自动登录B平台 后端生成包含token的完整链接传给前端 前端window location href打开时页面显示空白页 手动刷新才会跳到新链接 原因 用window location href跳转新链接可能会带
  • JIO学习(一)输入流综述

    一 字节输入流 java io InputStream java lang Object java io InputStream 所有已实现的接口 Closeable 直接已知子类 AudioInputStream ByteArrayInp
  • Pinia从入门到精通

    一 为什么使用 Pinia Pinia 是 Vue 的专属状态管理库 它允许你跨组件或页面共享状态 如果你熟悉组合式 API 的话 你可能会认为可以通过一行简单的 export const state reactive 来共享一个全局状态
  • /dev/null 1 & 2的用法

    应用背景 devnull 1 2的介绍 把错误输出和标准输出都导入日志testlog里 屏蔽标准输出和错误输出信息 tee命令如何把标准输出和错误输出都导入testlog里 应用背景 如下例所示 aa是不识别的命令 在执行 test sh时
  • 模拟退火法、遗传算法求解多皇后问题

    一 问题背景 多皇后问题是一个经典的问题 在一个 N x N 的棋盘上放置 N 个皇后 使其不能互相攻击 每行 每列 每一斜线上分别只能放置一个皇后 求解 N 皇后问题的复杂度随 N 呈指数级增加 传统的求解方法采用基于回溯算法的策略 当
  • 最简单的8421码计算方法

    很简单 0 9 就是按照二进制来的 0 0000 1 0001 9 1001 超出9以后把10进制情况下的数按照个十百千万的位数拆开 并把每一位按照8421转换后合起来 10 10000 11 10001 19 11001 20 10000
  • 多元线性回归分析spss结果解读_Spss的线性回归做法及结果解读

    上一节我们讲过了eviews做多元回归 但是很多同学做问卷之类的都需要用到spss 所以这节我教一下大家如何用spss做多元回归 并对结果进行解读 再对大家所疑惑的显著水平做一些白话的解释 一 线性回归的操作 将因变量和自变量移入对应的框中
  • C++ primer 之定义行为像指针的类

    提前声明 这是一篇水博 1 使用智能指针实现 include
  • markdown常用语法

    排版常用功能 在我们排版时 使用得最多的无非就是以下几种效果 标题 加粗 斜体 删除线 无序列表 有序列表 引用 代码块 分割线 标题 标题分为六个级别 几个 就是几级标题 需要注意的是 和标题之间要有空格 加粗 这是粗体效果 也就是在文字
  • 注释处理工具

    文章目录 pom CommnetUtil RafUtil https blog csdn net wwq921220 article details 119515809 pom
  • vscode快速打出vue项目模块

    在vscode的文件 首选项 用户片段 然后再搜索框输入vue 回车 打开vue json文件 添加下面这个代码 Print to console prefix vue body
  • 【改进的多同步挤压变换】基于改进多同步挤压的高分辨率时频分析工具,用于分析非平稳信号(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章 1 概述 文献来源 该文提出一种高分辨率时频
  • C++ 文件和流

    iostream 标准库提供了 cin 和 cout 方法 用于从标准输入读取流和向标准输出写入流 而从文件中读取流或向文件写入流 需要用到fstream标准库 在 C 中进行文件处理时 须在源代码文件中包含头文件
  • 基本ACL与高级ACL

    ACL Acess Control List 即访问控制列表 这张表中包含了匹配关系 条件和查询语句 表只是一个框架结构 其目的是为了对某种访问进行控制 信息点间通信 内外网络的通信都是企业网络中必不可少的业务需求 但是为了保证内网的安全性
  • [SQL报错] SQL报错:could not execute statement 和 query did not return a unique result: 2; nested excepti

    错误信息 操作失败 could not execute statement SQL n a nested exception is org hibernate exception DataExcepti 原因是数据库字段长度的限制 还有可能
  • API的使用

    通过API向第3方服务商请求服务 返回数据JSON格式处理成PHP数组格式
  • 机器学习小组知识点7:伯努利分布(Bernouli Distribution)

    适用环境 伯努利分布是较为简单的一种分布 应用于两种实验结果 要么成功 要么失败 一定程度上是二元的性质 这里 我们假设成功的概率为 p p 显然失败的概率就变成了1 p1 p 概率公式可以表示为 f x px 1 p 1 x f x p
  • Python 字符串去除空格的方法

    在处理Python代码字符串的时候 我们常会遇到要去除空格的情况 所以就总结了多种方法供大家参考 1 strip 方法 去除字符串开头或者结尾的空格 str Hello world str strip 输出 Hello world 2 ls
  • 在Unity3D中控制动画播放

    用Unity3D也算是好久了 但是每次做项目总还是能学到新的东西 这次做一个TPS的项目就遇到了这样一个问题 如何同时在上下半身播放不同的动画 解决方法其实是很简单 但由于对于动画资源的了解不足导致问题不断 最后是彻彻底底的研究了一遍Uni