测试版本U3D5.4。

1,为一个模型导入外部动画。为动画剪辑attack在某帧添加event,事件为 public void OnAttackEvent(){},函数体不做任何事情。

结果发现,在动画帧末尾添加事件,播放时两个动画的过渡效果没有了,去掉帧事件后正常过渡。

在动画集开始处(不超过33%)设置帧事件,不影响动画的过渡。

看来U3D的帧事件相当粗糙,不能精确的在动画集末尾帧添加事件而又不影响本动画集和下一动画集的过渡。

2,去掉has exit time,并在上面的帧事件中设置:

using UnityEngine;
using System.Collections;
using UnityEditor; public class testAnimEvent : MonoBehaviour { Animator animator;
int[] randArr = new int[];
int idx = ;
int idxLast;
AudioSource[] attackSound;
// Use this for initialization
void Start () {
animator = GetComponent<Animator> ();
System.Random rand = new System.Random ((int)Time.time);
randArr [] = ;
for(int i=; i<; i++){
randArr [i] = rand.Next (, );
Debug.Log (randArr [i]);
}
attackSound = GetComponents<AudioSource> ();
} // Update is called once per frame
void Update () { } void OnAttackEvent(){
int iSound = randArr [idxLast] > ? : ; //播放当前动画集的音效,注意idxLast
attackSound[iSound].Play ();
animator.SetInteger ("attackId", randArr[idx]);//设置下一个动画集(播放完本动画集后才会开始播放下一动画集,因为有has exit time)
idxLast = idx; idx = (idx + ) % ;
}
}

结果发现animator.SetInteger ("attackId", randArr[idx]);并不会立即打断当前播放而进入下一个要求的动画集。它要等到本动画集播放完了才进行切换。

3,复制Assets\Characters\ThirdPersonCharacter\Animation下的HumanoidRun.fbx到另一工程下,通过U3D察看此文件,发现不能用,如图1,正常情况应该如图2。原来是没考meta文件造成的,一般情况下meta文件没什么用,这里却例外了,可能这个文件有特殊性,不深究了。

         

      图1                    图2

4,不同人形模型间的动画可以通用,注意要在动画导入设置里rig页设置为: Animation Type : Humaniod才行。

这是最简单的动画集复用。一个人形模型可以通过引用其它人形模型的AnimationController来直接播放不属于自己的动画集和状态机,这就是动画集的retarget

5,为导入的动画使用curves : 这样状态机运行时就会从曲线上采样作为speed的值。还可以在脚本中通过animator.GetFloat("speed")来获取任意时刻speed曲线上的值。这样可以做许多事情。

U3D 动画帧事件问题的更多相关文章

  1. Unity 3D 动画帧事件

    前几天在项目开发中碰到一个这样的需求,RPG游戏中,特效和动画播放不同步的.假如主角在攻击NPC时,先实例化特效,后播放动画.动画毕竟是有一个时间长度的.等到动画播放攻击挥刀的那一瞬间时,特效可能早就 ...

  2. CocoStudio基础教程(6)使用CocoStudio编辑帧事件并关联到程序

    1.概述 帧事件也是新加入的功能.这篇中我们将看到如何使用它.我们将上篇中制作的动画稍加修改. 2.用途与原理 首先介绍一下帧事件.正如其名:一个与帧相关联的事件. 为什么要这么做呢?首先没人想做一大 ...

  3. [UWP]缓存Lottie动画帧

    在上一篇博文<[UWP]在UWP平台中使用Lottie动画>中我简单介绍了一下LottieUWP项目以及如何使用它呈现Lottie动画,这篇文章里我们来讲点进阶的东西--缓存Lottie动 ...

  4. requestAnimationFrame ---- 请求动画帧。

    window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.该方法需要传入一个回调函数作为参数,该回调函数会 ...

  5. CSS3的自定义动画帧

    CSS3新增的动画帧非常绚丽,可以简单实现一些动画效果,目前除IE外各大主流浏览器都支持 本文演示三个:transform: scale3d(x, y, z)-缩放;.transform: trans ...

  6. 【转】CSS3动画帧数科学计算法

    本文来源于:财付通TID 原作者:bboy90 总结都浓缩在这个工具里了,想知道工具的地址或想窥探工具诞生的趣事请往下看 . —————————————————————–     华丽丽的开篇     ...

  7. Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题

    最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏. 解决办法如下,可能不是太完美,至少解决了大部分问题. 1.在org.c ...

  8. [WPF] 动画Completed事件里获取执行该动画的UI对象

    原文:[WPF] 动画Completed事件里获取执行该动画的UI对象 昨天群里有位童鞋提出如何在动画完成事件Completed里获取到执行该动画的UI对象. WPF里动画的Completed的本身并 ...

  9. 关于v4包的Fragment过渡动画的事件监听无响应问题解决

    项目中部分功能模块采用了单Activity+多Fragment模式,当Fragment切换时,需要在过渡动画执行完后做一些操作,通常就是在自己封装的FragmentBase中重写onCreateAni ...

随机推荐

  1. JavaScript Patterns 5.8 Chaining Pattern

    Chaining Pattern - Call methods on an object one after the other without assigning the return values ...

  2. ADO。Net(二)——防止SQL注入攻击

    规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可 ...

  3. Office——EXCEL 打开自动修改 关闭自动保存

    ==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的 ...

  4. Linux命令中使用正则表达式

    在使用grep.awk和sed命令时,需要使用正则表达式.比如我通过grep找代码编译结果中是否有错误.或者是否有我代码的错误.这里说下正则表达式基本的应用: • 匹配行首与行尾.• 匹配数据集.• ...

  5. ES6块级作用域及新变量声明(let)

    很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域.用var声明的变量具有变量提升(declaration hoist ...

  6. Linux命令总结【待续】

    1.打包:  tar -czf small.tar.gz small(目录名)  ;压缩并打包目录 2.解包: tar zxvf 文件名 date -s 2015 2 12 修改时间 cp name ...

  7. 【JAVA 小结】Java关于类与对象的代码

    分别建立2个类class works 和 Person import java.io.*; public class works { public static void main(String[] ...

  8. 系统进程 zygote(三)—— app_process 的 main 函数

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 首先: , , , ) < ) { // Older kernels don't understand ...

  9. Fragment中添加ListView而不使用ListFragment

    最初的构想是,将Fragment和ViewPager结合起来, 然后突发奇想,在第一个Fragment里添加了ListView, 依照网上的建议,extends了ListFragment,接着各种报错 ...

  10. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...