可通过BlendShape来实现眨眼动画,效果如下:

转载请注明出处:http://www.cnblogs.com/jietian331/p/7054673.html

代码如下:

  1. using UnityEngine;
  2.  
  3. /// <summary>
  4. /// 眨眼类
  5. /// </summary>
  6. public class EyeBlink
  7. {
  8. static float[] Weights = new float[] { , , , , }; // 100时眼睛全闭,0时眼睛全开
  9.  
  10. public SkinnedMeshRenderer Face;
  11. bool m_enable = true;
  12.  
  13. bool m_blinking;
  14. float m_timer;
  15. int m_index;
  16.  
  17. public void Update()
  18. {
  19. if (!Face || !Enable)
  20. return;
  21.  
  22. m_timer -= Time.deltaTime;
  23.  
  24. if (m_blinking)
  25. {
  26. if (m_timer < )
  27. {
  28. m_timer = 0.05f; // 每隔0.05s设置一次眨眼动画,可调节眨眼的快慢
  29. m_index++;
  30.  
  31. if (m_index < Weights.Length)
  32. SetShape(m_index); // 设置眨眼动画,从闭到开
  33. else
  34. {
  35. m_blinking = false; // 眨眼结束
  36. m_timer = Random.Range(, ); // 设置眼睛保持睁开的时间
  37. }
  38. }
  39. }
  40. else
  41. {
  42. if (m_timer < )
  43. ToBlink(); // 开始眨眼
  44. }
  45. }
  46.  
  47. void ToBlink()
  48. {
  49. m_blinking = true;
  50. m_timer = ;
  51. m_index = -;
  52. }
  53.  
  54. void SetShape(int index)
  55. {
  56. Face.SetBlendShapeWeight(, Weights[index]);
  57. }
  58.  
  59. public bool Enable
  60. {
  61. get { return m_enable; }
  62. set
  63. {
  64. if (m_enable != value)
  65. {
  66. m_enable = value;
  67.  
  68. if (m_enable)
  69. ToBlink();
  70. else
  71. SetShape(Weights.Length - );
  72. }
  73. }
  74. }
  75. }

Unity3d之表情动画--眨眼的更多相关文章

  1. Unity3d 实现顶点动画

    在今年GDC上发现一个非常有趣的演讲,叫做Animating With Math,遂实现之,是讲述顶点shader动画的,举了几个经典的例子,但是讲者并没有给代码,而是像虚幻引擎那样的节点,这样更加清 ...

  2. Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系

    2条评论 Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移,这个就是通过 applyRootMotion 来达成的,我们只需要在使用 Animator ...

  3. Unity3D之Legacy动画系统学习笔记

    Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统.目前的情况是Mecanim与Legacy两套动画系统同时 ...

  4. (转)在Unity3D中控制动画播放

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

  5. Unity3D之Mecanim动画系统学习笔记(十一):高级功能应用

    动作游戏 还记得读书的时候熬夜打<波斯王子>的时光,我们的王子通过跳跃穿过墙壁的小洞.在高层建筑上进行攀爬和跳跃,还有在操作失误掉下高楼和触发必死机关后使用时之沙的时光倒流功能回归死亡之前 ...

  6. Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关

    资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...

  7. Unity3D之Mecanim动画系统学习笔记(七):IK(反向动力学)动画

    什么是IK? IK(Inverse Kinematics)即反向动力学,即可以使用场景中的各种物体来控制和影响角色身体部位的运动,一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学), ...

  8. Unity3D之Mecanim动画系统学习笔记(二):模型导入

    我们要在Unity3D中使用上模型和动画,需要经过下面几个阶段的制作,下面以一个人形的模型开发为准来介绍. 模型制作 模型建模(Modelling) 我们的美术在建模时一般会制作一个称为T-Pose( ...

  9. Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统

    Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画 ...

随机推荐

  1. jvisualvm All-in-One Java Troubleshooting Tool

    java 监控.故障.性能可视化分析 VisualVM: Download https://visualvm.github.io/download.html All-in-One Java Troub ...

  2. PHP 正则表达式---匹配模式

    1.PHP 正则表达式 正则表达式贪婪匹配,非贪婪匹配. 默认是贪婪匹配, 例如 ①.贪婪匹配, $str = ' 香肠 月饼 '; preg_match('/ (.)</td>/',$s ...

  3. VPS常用操作(自用)

    1.screen  用来开启进程,关闭ssh或命令行后扔可以继续运行 screen screen -list screen -r xx screen -S PID -X quit 2.mono asf ...

  4. kubernetes的应用数据持久化

    1.无状态应用与有状态应用 应用的有状态和无状态是根据应用是否有持久化保存数据的需求而言的,即持久化保存数据的应用为有状态的应用,反之则为无状态的应用.常见的系统往往是有状态的应用,比如对于微博和微信 ...

  5. Appium环境配置(一)

    一:环境准备(Windows 7版本 64位系统) 1.jdk1.6.0 (64位) 2.android-sdk 3.appium 4.Node.js:node-v8.11.1 5.Appium-Py ...

  6. 离线应用与客户端存储(cookie storage indexedDB)

    离线检测 HTML5定义一个属性:navigator.onLine的属性.这个属性值为true,表示设备在线,值为false,表示设备离线.为了更好的确定网络是否可用,HTML5还定义了两个事件.这两 ...

  7. iOS APP 在前台时弹出本地通知

    iOS10 之后使用才有效果 1.在 AppDelegate.m 文件里面添加下面的方法. - (void)userNotificationCenter:(UNUserNotificationCent ...

  8. Java设计模式(一)普通工场模式 抽象工场模式

    设计模式 设计模式是前人总结的,为了解决一类问题而总结的代码设计经验. 最初可能为了使用而使用,后面就会发现.非常多没想到的问题由于使用了正确的设计模式已经为你考虑到了.<design patt ...

  9. mysql explain中的 “Select tables optimized away”

    mysql explain中的 “Select tables optimized away” http://blog.chinaunix.net/uid-10449864-id-2956845.htm ...

  10. 报错解决——DateTimeField *** received a naive datetime (***) while time zone support is active

    这是一个跟时区有关的问题,报错中说到datetime字段得到一个naive datetime,而不是支持time zone的active datetime由于Django的设置中米哦人USE_TZ设置 ...