unity怎么获取unity animator 教程里面的动作

animator怎么获取当前播放的动画运行的帧数?【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:73,702贴子:
animator怎么获取当前播放的动画运行的帧数?收藏
大神全靠你了
知道GetCurrentAnimatorStateInfo这个函数,但是不知道该怎么用
每秒24贞的话,乘以秒数
AnimatorStateInfo类里面的normalizedTime这个返回了当前动作的时间,整数表示已经循环了几次,小数点后的数字表示目前动作执行的进度。
我知道unity阿凡达系统里有个加载事件的方式在动画播放到第几帧的时候发送个信息到指定的物体上。
顶起来。。。。很多伤害和事件都是靠动画播放程度来触发的,而且通常不是播放完成阶段。。。
谢谢4楼,4楼正解。。。
我想知道怎么判断当前的animator的播放状态,比如这个动画目前是否已经播放结束了什么的要如何判断啊?
笨方法,获取动画时间,然后乘30
但是 animation.PlayQueued 用这个方法播放的动画 获得的normalizedTime 总是 0怎么办
神都在发问了,真正的神在哪
看timer走到1秒时,i是几,帧频就是几。public class test : MonoBehaviour {// Use this for initialization
public int i = 0;
public float timer=0;void Start () {
}// Update is called once per framevoid Update () {
i = i + 1;
timer = timer + Time.deltaT
Debug.Log(i);
Debug.Log(timer);}}
AnimationLength = m_AnimatorTarget.GetCurrentAnimatorStateInfo (0).length * 50;50为动画帧率,算出动画总帧数;void Update (){m_nCurrFrame = (int)(m_AnimatorTarget.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 * AnimationLength);Debug.Log (&m_nCurrFrame :& + m_nCurrFrame );}得出当前动画的帧数
登录百度帐号推荐应用3185人阅读
unity(37)
从Animator中获得runtimeAnimatorController.
RuntimeAnimatorController是运行时动画的Controller,可以用来在运行时改变源动画。
AnimatorOverrideController用来override animationClip的
参见AnimatorOverrideController api demo:
animator = GetComponent&Animator&(); overrideController = new ();animator.runtimeAnimatorController = overrideC
初始化AnimatorOverrideController可以赋值给它一个runtimeAnimatorController
AnimatorOverrideController 的clips成员变量提供给获得AnimationClip接口
所以获得Clips的操作为:
Animator animator=GetComponent&Animator&();
AnimatorOverrideController overrideController=new&AnimatorOverrideController ();
overrideController.runtimeAnimatorController=animator.runtimeAnimatorC
AnimationClipPair[] pairclips=overrideController.
AnimationClipPair中的originalClip和overrideClip分别为AnimationClip类型。前者是原始的动画资源,后者是可以覆盖的动画资源。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:50356次
排名:千里之外
原创:42篇
转载:11篇
评论:12条
(1)(1)(2)(1)(1)(1)(3)(2)(3)(1)(5)(14)(4)(1)(2)(3)(3)(1)(1)(2)(1)5702人阅读
首先要分清两个概念,动作融合和动作混合
1动作融合是指,一个动作播放到结束后时,接着播另一个动作时,首尾进行融,实现平滑过渡的效果
2动作混合是指,本来是多个独立完整的动作,来用其中一个动作来控制角色的部分骨骼,另一个来控制角色的另一部分骨骼,实现不同的身体部分播放不同的动作,目地是为了节省动作资源,不用单独重新制做新的动作
这里只说动作混合,动作融合放到其它的文章里
首先准备好美术资源&
1角色模型fbx,不带动作信息,只有模型和蒙皮和骨骼信息,max导出时要导出avatar
2单独的动作文件 run.anim和attack.anim
制作animator
1创建animator controller动画控制器,挂到角色的animator组件里
2双击animator controller打开animator面板,新建uplayer和downlayer两个层,用来做上下半身的混合
3选中uplayer,把attack.anim拖进去,选中downlayer,把run.anim拖进去
4新建up和down两个avatar mask,用来标识关连的骨骼
5up.mask的transform mask里 use skeleton from 选中角色的avatar,在import skeleton下选中角色骨骼中的上半身所有骨骼,(选中上半身根节点,子节点会自动选中)
6down.mask的transform mask里 use skeleton from 选中角色的avatar,在import skeleton下选中角色骨骼中的下半身所有骨骼,(选中上半身根节点,子节点会自动选中)
7把up.mask和down.mask分别给uplayer和downlayer
这样当uplayer和downlayer的weight为1时,角色就会上半身播放攻击动作,下半身播放run动作
1base layer里可以建立一些基本动作,用来正常动作之间的切换,通过设置parameters来控制动作切换,
2下层的layer用做动作混合,建立不同的avator mask,关联不同的骨骼,给不同的layer,不同的layer放置不同的动——通过设置layer的weight来控制各个层的混合或停用
layer属性功能
weight &动作的控制权,越下层的layer的weight高于上层layer的weight的控制权
mask 使用的avatar mask
blending override 覆盖上层 &additive叠加上层
svnc 勾选后,可以选择同步到其它layer的,把同步的layer全复制过来后在可以添加自己的
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:80171次
积分:1124
积分:1124
排名:千里之外
原创:24篇
转载:52篇
(7)(1)(4)(1)(4)(2)(2)(1)(7)(7)(1)(1)(1)(9)(5)(13)(9)(1)unity3D游戏开发之详解Animation类和Animator类_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
unity3D游戏开发之详解Animation类和Animator类
上传于|0|0|文档简介
&&unity3D游戏开发之详解Animation类和Animator类
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩8页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 unity animator layer 的文章

 

随机推荐