动画导入

美工做好的模型,直接将文件夹拖进来就导入好了。导入模型后,检查模型的材质贴图等是否丢失,若丢失,根据名字补上。如果美工取名规范,一一对应的话,就很简单。如果不是,那就呵呵哒。

有的美工做的比较差,所有模型的动画都在一个上面,需要我们后续的动画分割,遇到这种,嗯,心里骂骂就好了。但是,作为一个程序,分割动画真的好麻烦的好吧。

而有的美工就做的很好了,动画都是单独的,不需要我们后续动画分割,但也有可能会需要一些小的调整。

选中模型后,Rig表示动画的导入方式

Node:不导入动画

Legacy:老版本的动画导入方式,现在基本不会用到了,但是如果用到老版本的资源,也会使用到这个。使用此种方式导入的动画,只能使用Animation组件播放动画,而不能使用新版的动画状态机。

Generic:新版的动画导入方式,适用于非人型的东西。选择此种方式,要指定Avatar Definition(骨骼映射方式)和Root node(根节点)。其中骨骼映射方式可以选择从当前模型创建和从其它骨骼复制,后者需要两个模型具有相同的骨骼,通常一个美工做的是一样的。参数Optimize Game Object,表示模型优化,建议在打包时勾选。

注意:此种方式不能使用动画重定向,而且动画的控制,比如移动等,都需要代码控制!!!

Humanoid:新版的动画导入方式,人型和非人型都能用。这种方式动画不需要代码单独控制,而且相同的骨骼模型可以使用动画重定向

Bake Into Pose:勾选后表示当前属性不会随动画动作改变

Based Upon:相当于基点

Loop match:循环匹配,绿点表示匹配的很好

动画分割

选中Animation进行动画分割,勾选Loop Pose表示该动画循环播放

通过动画状态机播放动画

导入动画后,将模型拖到场景中,创建的物体身上会自带一个Animator组件,其中的Controller就是动画状态机。动画状态机可以手动创建(右键,Animator Controller),在Animator界面中可以对状态机进行编辑。

通过代码控制动画状态机

在Animation界面中的Parameter中,添加一个控制状态,使用这个状态来控制动画的切换。其中,物体的Animator组件控制这些状态。

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Biker : MonoBehaviour { private Animator anim; void Start () {
// 获取Animator组件
anim = GetComponent<Animator>();
} void Update () {
float v = Input.GetAxisRaw("Vertical");
// 使用代码控制状态
anim.SetInteger("Vertical", (int)v);
//transform.Translate(Vector3.forward * v * Time.deltaTime * 4);
}
}

StringToHash把参数字符串转换成ID:

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Biker : MonoBehaviour { private Animator anim;
// 转换ID
int verticalID = Animator.StringToHash("Vertical"); void Start () {
// 获取Animator组件
anim = GetComponent<Animator>();
} void Update () {
float v = Input.GetAxisRaw("Vertical");
// 使用代码控制状态
anim.SetInteger(verticalID, (int)v);
//transform.Translate(Vector3.forward * v * Time.deltaTime * 4);
}
}

动画的反向控制:

在Curves(曲线)里添加一个状态曲线,左侧添加一个相同名字的参数。在动画运行的时候,因为动画中有这个曲线,所以不能通过代码来控制参数。但是,曲线运动时,在不同时间参数值会根据曲线变化。我们可以获取到这个值来使用,比如,一个添加了角色控制器的角色翻墙,在翻墙动画播放时,有一段时间需要将角色的角色控制器禁用,否则角色控制器会碰到墙壁。这时,设置好曲线,在翻墙动画播放到一个时间段时,禁用角色控制器。

Unity中的动画系统和Timeline(3) 模型和动画导入的更多相关文章

  1. Unity中的动画系统和Timeline(1) 普通动画创建

    学习使用版本:Unity2017.1.1 目标:给一个Cube创建动画 一:第一种创建方法 1 Windows —— Animation,打开Aniamtion动画界面,此时显示 因为此时没有任何动画 ...

  2. Unity中的动画系统和Timeline(4) AvatarMask和IK动画

    AvatarMask(骨骼遮罩) 在前面角色动画的基础上,角色在奔跑过程中捡起一块木头,双手要抱着这块木头.如果使用前面的方法,直接切换动画,那么就只剩下抱木头的动画,其它动画就没了.这时我们要使用下 ...

  3. Unity中的动画系统和Timeline(5) Timeline

    在前面的动画,都是控制单独的物体,比如说控制一个角色的运动.而Timeline,可以对多个物体实施动画,形成过场动画,或者电影效果.比如,很多赛车游戏比赛开始前都会播放一段开场动画,围绕自己车的几个方 ...

  4. Unity中的动画系统和Timeline(2) 按钮动画和2D精灵动画

    按钮动画 1 创建按钮后,按钮的Button组件中,Transition我们平时用的时Tint,这次选择Animation 选择Auto Generate Animation,创建一个按钮动画 2 后 ...

  5. Unity中的动画系统和Timeline(3) 混合树和动画匹配

    混合树 前面我们通过在Animation界面添加单独的动作来控制动画,这样做比较麻烦,每个单独的属性,比如站立,奔跑等,都需要单独的代码来控制.现在我们可以通过使用混合树,其基本思想是将相近的动画混合 ...

  6. 关于Unity中的几何体,材质和FBX模型

    一.创建几何体的类型 1: 创建平面 Plane;2: 创建立方体 Cube;3: 创建球体 Sphere;4: 创建胶囊体 Capsule;5: 创建圆柱体 Cylinder;6: 3D文字 3D ...

  7. 用体渲染的方法在Unity中渲染云(18/4/4更新)

    github: https://github.com/yangrc1234/VolumeCloud 更新的内容在底部 最近在知乎上看到一篇文章讲云层的渲染(https://zhuanlan.zhihu ...

  8. 高速上手Unity中最好的补间动画插件DFTween

     出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.17   23:00 DFTween 是一个在 Unity 游戏引擎中高 ...

  9. 骨骼动画的原理及在Unity中的使用

    制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...

随机推荐

  1. grub命令行和配置文件配置配置信息

    一.grub简介 GNU GRUB(简称“GRUB”)是一个来自GNU项目的启动引导程序.GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系 ...

  2. python 文件操作的相对路径和绝对路径(windows)

    1.相对路径 windows  '.\'表示当前路径 with open(r'.\db\123.txt','w',encoding='utf-8') as f: f.write('abc') 2.绝对 ...

  3. C# 学习第二天笔记

    1. Convert 类型转换 数据类型不兼容的需要转换时,使用Convert转换.转成什么类型就to谁 例: string--> int string a=“b” Int  c= Conver ...

  4. 小程序 swiper 轮播图滚动图片 + 视频

    直奔代码主题wxml: <view class="test_box"> <swiper indicator-dots="{{indicatorDots} ...

  5. [CSP-S模拟测试]:序列(二分答案+树状数组)

    题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1 ...

  6. shell 之 用linux定时任务crontab和watchdog.sh脚本做软件看门狗

    1.简介 看门狗的作用是定期检测服务正常运行,如果发现服务不在了,会重新拉起服务:linux中可以利用系统的定时任务功能crontab定期的去执行watchdog.sh脚本,而watchdog.sh脚 ...

  7. JavaScript 高级系列之节流 [throttle] 与防抖 [debounce]

    一.概念 这两个东西都是为了项目优化而出现的,官方是没有具体定义的,他们的出现主要是为了解决一些短时间内连续执行的事件带来性能上的不佳和内存的消耗巨大等问题:像这类事件一般像 scroll keyup ...

  8. (十八)C语言之预编译命令、宏

  9. 2018-2019-2 20165205 网络对抗技术 Exp7 网络欺诈防范

    2018-2019-2 20165205 网络对抗技术 Exp7 网络欺诈防范 实验内容 本次实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET ...

  10. Walkthrough: My first WPF desktop application

    Walkthrough: My first WPF desktop application This article shows you how to develop a Windows Presen ...