【Unity动画】之基础概念
来源:互联网 发布:淘宝怎么装饰店面 编辑:程序博客网 时间:2024/06/14 21:31
1: animation是以往的动画组件。相当于是一组动画的集合,animator是新的组件,角色与其行为之间的联系纽带。
2:动画状态机中右键下面的set as layer default state是将该动画转变为默认动画,游戏一加载就播放这个动画
3: 这是骨骼文件,一套完整的骨骼结构,用于控制角色的动作。
4: 这是动画文件, 其中的Always Animate是在动画移除摄像机之外后,任然播放动画。
5: 这是骨骼映射文件,即Avatar。
6:Animator Controller 文件,这是动画系统很重要的文件,它是状态机的产物,创建它的方法是: 建一个Animator文件夹,然后在里面右键选择创建空的Animator Control文件,双击就可以在状态机中将各个动作相连
7:在unity中创建动画:导入一个带动画的资源模型,然后要为此模型创建Animator组件,然后给Controller和Avatar两个参数赋值,一定要是对应模型的这两个参数
8: 每个动作模型都要有 Unity 的人形 Avatar 映射。这样的话所有的动作就属于“同一类型”,这样就可以实现动作文件的共用
9: 有时我们会遇到行走动画播放了,但并不能让人物向前走,只是在原地移动,这时需要勾选Animator参数中的Apply Root Motion
10: 还有会遇见模型avatar并没有映射到上去,是因为模型本身的原因,处理方法:找到rig面板下的Avatar Definition选项选择Copy from other avatar,用其他动作的avatar
11: 用按键控制动画的播放:
首先在状态机中将要播放的动画放入,然后用双向箭头将各个状态相连(双向对应按键的按下与抬起)
,然后定义参数变量parameter:,
然后点击状态线: ,设置其中的Conditions参数为刚才的parameter参数,w键“去箭头”大于0.1,“回箭头”小于0.1,s键“去箭头”小于-0.1,“回箭头”大于-0.1.
然后添加脚本:
using UnityEngine;using System.Collections;public class RobotController : MonoBehaviour { private Animator ani;void Start () { ani =gameObject.GetComponent<Animator>();} float v = Input.GetAxis("Vertical"); ani.SetFloat("vertical", v);//此处小写是因为设置参数是小写,我们就是将v传递给vertical float h = Input.GetAxis("Horizontal"); ani.SetFloat("horizontal", h);}
有时在按键之后,动作隔很久才能运动,是因为勾选了Animator面板中连接线的Has Exit time ,不勾选动作就能立马执行。
如果我们勾选了该项,在动画转换时会等待当前动画播放完毕才会转换到下一个动画,如果当前动画是循环动画会等待本次播放完毕时转换,所以对于需要立即转换动画的情况时记得要取消勾选。
还有一种情况时,当我当前的动画播放完毕后就自动转换到箭头所指的下一个状态(没有其他跳转条件),此时必须勾选该选项,否则动画播放完毕后就会卡在最后一帧,如果是循环动画就会一直循环播放。
即四步:
创建jump动画参数是bool类型的
if(Input.GetKeyDown(KeyCode.Space)) { ani.SetBool("jump", true); } //else //{ // ani.SetBool("jump", false); //}//也可以这样写 if(Input.GetKeyUp(KeyCode.Space)) { ani.SetBool("jump", false); }此代码是加在上面代码中的。
在jump按键设置中,从向前走到jump阶段中的Has Exit Time,应该取消,是为了使向前走动作还没播放完毕就切换播放jump动作,而jump到向前走状态的切换,就必须使
jump播放完毕,才能再次播放向前走,这才符合人的眼部思维。
Animator状态机中的参数类型有:bool,float,trigger,int。
1:当按键是按下或者抬起状态时,使用bool来判断。例如jump
2:当按键是持续按下时用float,例如wasd键。
3:也可以使用trigger来触发检测按键,按了这个键就执行相应的动作。
注意点:Has Exit Time是否勾选的依据是是否需要动作执行完毕之后,再执行其他动作。(一定要区分清楚是否勾选,特别是参数类型设置为trriger时,不然会得不到想要的结果)
在播放jump这个动作的时候:
jump过去的钩取消,回来的钩不能取消
在jump按键设置中,从向前走到jump阶段中的Has Exit Time,应该取消,是为了使向前走动作还没播放完毕就切换播放jump动作,而jump到向前走状态的切换,就必须使
jump播放完毕,才能再次播放向前走,这才符合人的眼部思维。
为什么jump设置为bool,wasad键设置为float是因为,按下jump,抬起jump不是持续状态,所以是bool,按住w键向前走,是一个持续的状态,用float参数表示
参数是与每个动作过渡线的Conditions联系在一起的。
12:
在Rig(装配模式)下有几个选项:骨骼的类型:None,表示没有骨骼。Legacy:表示为老版本动画系统:Animation,在资源节约方面比较好,但动画融合不怎么样。Generic:表示为通用的骨骼,在humanoid基础上对Bone骨骼进行了增强,可以应用到怪物中。Humanoid:表示为人形骨骼(设置为人形骨骼可以使用Mecanim专门为人形骨骼开发的各种功能了), Mecanim 人形角色,可配置Avatar和重定向,但对Bone支持不好。
例如:在3dmax中可以做人物和物品的动画,导入unity里面选择Generic传统动画,那么人物和物品的动画都可以正常播放,而选择humanoid,则只能播放人物动画,原因是引擎找不到物品的骨骼
Generic动画:
变为Humanoid动画:
可以发现,物品的动画没有了。
13:
Bip是将骨骼进行自动映射 clear是清除原有骨骼配对。
14:unity使用30帧的帧率(FPS),不支持约束动画,和顶点动画。
15:Generic中的Root node:动画根节点,校准动画位移。 人物的披风随风摆动,也是动画。其实是人物的Bone骨骼,但humanoid并没有将Bone骨骼融合进来,只有人物肉身的骨骼。主要用在攻击动画中。
- 【Unity动画】之基础概念
- unity基础概念
- unity基础概念
- Unity动画系统基础
- 基础动画概念
- android动画基础概念
- Unity之概念总结
- unity之动画编辑器
- unity之循环动画
- unity之动画分层
- Unity之动画剪辑
- unity之动画编辑器
- Unity之Animation动画
- Unity之人物骨骼动画
- Unity之Animation动画制作
- Unity基础—射线概念和API
- unity之GUI基础
- Unity之GUI基础
- buildTree,无限递归建树
- CB(协同商务)
- 关于spring定时任务的并发问题
- 201604-2 俄罗斯方块
- (HDU)1075
- 【Unity动画】之基础概念
- easyui databox传值问题和格式解析
- mac修改屏幕截图保存位置
- Android Gilde使用
- .h和.cpp文件的区别
- iOS面试题
- Android webview与js交互
- AS导入GitHub上下载下来的项目特别慢,卡在Build Gradler
- Apache常见功能实战详解