也许这一篇文章的内容有点枯燥,但我要说的是如果你想深入的了解游戏引擎是如何处理动画片断或者素材并

让玩家操控的角色动起来栩栩如生,那么这真是一篇好文章(当然我仅仅是翻译了一下)

动画脚本 Animation Scripting

Unity's 动画系统允许你创建一个漂亮的动画蒙皮角色. 动画系统支持动画融合,混合,添加动画,步调周期时间同步.动画层.控制动画回放的所有方面(时间,速度,混合权重) 每个顶点有1.2.4个骨骼影响的mesh,基于物理系统的布娃娃系统,另外还有程序动画.为了获得最佳效果推荐您在制作模型和动画绑定前阅读一下 Modeling Optimized Characters 章节.

制作一个动画角色主要包括两个方面; 在世界中移动  由此产生的动画. 如果你想了解角色移动相关的更多内容, 请参阅Character Controller page.   实际上角色动画是由Unity's 脚本界面完成的 .

你可以下载 example demos 中预设置好的动画角色. 当你学完本页的基础部分你还可以看一看 animation script interface.

如果需要你可以点击并快速转到以下主题:

·         Animation Blending    动画融合

·         Animation Layers      动画层

·         Animation Mixing       动画混合

·         Additive Animation      附加动画

·         Procedural Animation    程序动画

·         Animation Playback 和 Sampling   动画重放和取样

Animation Blending 动画融合

在现今的游戏中Animation Blending是一项保证游戏动画顺畅过渡的基本的特性.动画师创建的动画例如: walk循环, run 循环, idle原地空闲动画 或射击动画.在游戏的任何时间点你都有可能从空闲站立转换到走动,反之亦然. 当然你不希望两个不同的动作之间突然跳转, 你需要动画平滑过渡.

而这个问题的解决就依赖动画融合技术. 在Unity中你可以让同一个角色拥有任意数量的动画.所有这些动画融合添加成为一个总的动画.

首先我们来为一个角色添加两个动画原地空闲站立和走动并平滑的使这两个动画过渡. 为了使我们在写脚本时简单些, 首先我们设置动画的 Wrap Mode为 Loop. 然后关闭 Play Automatically来让我们的脚本来独占动画的播放.

我们第一个动画脚本很简单; 我们需要一些方法来探查角色移动的有多快, 然后在走和站立之间淡入淡出. 在这个简单的测试中我们使用 pre-setup input axes.

function Update () {

if (Input.GetAxis("Vertical") > 0.2)

animation.CrossFade ("walk");

else

animation.CrossFade ("idle");

}

下面我们来让这个脚本运行:

1.       创建一个js脚本 Assets->Create Other->Javascript.

2.       把代码拷贝进去

3.       把脚本拖拽给角色 character (It needs to be the same GameObject as the animation)

点击Play 按钮, 当你按上下键时角色会走动,松开上下键时角色站立不动.

动画层Animation Layers

层是一个非常有用的概念它可以让你将动画片段任意成组并且区分优先顺序.

在Unity's动画系统中, 你可以混合任意数量的动画片段. 你可以手工分配权重或者直接使用animation.CrossFade(),来自动分配权重.

混合权重混合权重总是在应用前被规格化 normalized

比如说我们现在有一个 walk cycle 和一个run cycle, 权重都是1 (100%).当unity计算最终动画时会规格化权重, 这意味着walk占50% 权重,   run cycle占50% 权重.

这在大多数情况下都是不错的, 但当两个动画片段同时运行而其中一个权重明显大于另外一个. 那么你需要手动调整权重值,但如果你使用动画层来解决这个问题过程会容易得多.

制作动画层的范例Layering Example

例如现在你有一个射击动画, 一个空闲站立,一个走动循环  . 你需要在走和站两个动作间持续的淡入淡出(在玩家走动速度的基础上) 但当玩家射击时我们只想展示射击动画. 因而射击动画此时的优先度最高.

为了达到这一目的最简单的方法是在射击时简单的保持 walk 和 idle动画. 接下来需要确定shoot animation在一个比idle 和walk更高的层. 这意味着shoot animation 将首先收到混合权重.   walk 和idle 只有在 shoot animation不使用 100% 混合权重的情况下接收权重. 所以当 CrossFading the shoot animation in, 权重将从0开始很短时间内到达 100%. 在开始阶段 walk 和idle 层将依然可以收到混合权重 但当 shoot animation 完全切入时, 他们就收不到权重了.  这才是我们需要的!

function Start () {

// Set all animations to loop 设置所有动画为循环

animation.wrapMode = WrapMode.Loop;

// except shooting 除了射击(不循环)

animation["shoot"].wrapMode = WrapMode.Once;

//放置idle 和 walk 进低一级别的 layers  (默认 layer 总是 0)

// This will do two things这将作两件事情

// - 当 calling CrossFade时,

转载于:https://www.cnblogs.com/forworldpeace/p/3391916.html

Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理)相关推荐

  1. Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理--旧的动画系统)

    (来自:http://blog.sina.com.cn/s/blog_409cc4b00100qmgz.html) 也许这一篇文章的内容有点枯燥,但我要说的是如果你想深入的了解游戏引擎是如何处理动画片 ...

  2. Unity3d动画脚本 Animation Scripting

    Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理) 也许这一篇文章的内容有点枯燥,但我要说的是如果你想深入的了解游戏引擎是如何处理动画片断或者素材并 让 ...

  3. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)

    Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong. ...

  4. 游戏引擎中的实时渲染和在V-Ray中渲染有什么区别

    游戏引擎中的实时渲染和在V-Ray中渲染有什么区别,下面我们一起来分析一下,从2个方面来具体分析实时渲染和在V-Ray中渲染种的不一样的区别. 原理区别 VRay等渲染器原理上叫做离线渲染(Offli ...

  5. Games104 Lecture 4 游戏引擎中的渲染实践

    游戏引擎中的渲染实践 概览 渲染系统的对象 GPU 架构 数据流 Cache GPU Bound 渲染 Renderable Resource Pool 可见性裁剪 纹理压缩 建模工具 新的渲染管线 ...

  6. 3D游戏的照明设计理论,第4部分:如何在游戏引擎中照亮游戏世界

    从更一般和更概念的角度来看,这是有关我如何处理游戏照明的系列文章的一部分.我在Unity中构建了大部分示例,但这通常适用于任何3D游戏引擎,其中大多数具有类似的照明工具. 我们开始思考了有关光照的文化 ...

  7. Games104 Lecture 12 游戏引擎中的粒子和声效系统

    游戏引擎中的粒子和声效系统 粒子基础 粒子渲染 GPU粒子 粒子应用 声音基础 三维音频渲染 粒子基础 粒子系统里有各种发射器(emitter),发射器发射粒子(particle). 粒子是拥有位置. ...

  8. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放【转】

    http://blog.csdn.net/xys289187120/article/details/6961080        3D 世界中自定义模型的使用恐怕是重中之重,因为系统自身提供的模型肯定 ...

  9. 《Genesis-3D游戏引擎系列教程-进阶篇》6:动画

    2019独角兽企业重金招聘Python工程师标准>>> 注:本系列进阶教程仅针对引擎编辑器:v1.2.2及以下版本 脚本控制与分割动画 资源下载   工程文件 经过一些编辑器基本操作 ...

  10. 如何快速制作脚本之学习怎么开发游戏辅助中自动加血的脚本——以按键精灵脚本制作的颜色坐标选取为例

    简介: 按键精灵2014--简单游戏脚本免费制作开发工具,按键精灵论坛配有易学易懂的简单脚本开发教程,学习游戏脚本开发必备软件,教你怎么开发脚本,如何快速制作脚本.还有丰富的免费游戏脚本下载~ 工具/ ...

最新文章

  1. apc220使用心得
  2. Tensorflow yolov3 Intel Realsense D435 识别时间测试
  3. linux之权限管理_1
  4. 亚马逊关键词应该如何选择?
  5. 科技助力精准扶贫:高德地图的河南公益行
  6. 什么是数据工程师,数据工程师主要是做什么的?
  7. python 爬取裁判文书网
  8. 1224 红魔馆的纸牌游戏 (计算24点,dfs)
  9. uniapp安装及适配手机模拟器方案总结
  10. 交互式多模型 IMM的原理
  11. allegro 使用subdrawing
  12. 申请Google AdSense联盟(还没有通过)
  13. 智能终端设备防破解该怎么防范
  14. 汇编程序:计算分段函数
  15. C++ 在 windows 下获取 tuntap 虚拟网卡的 ComponentId
  16. Vue-非父子组件间的传值
  17. HTML——tab标签
  18. window.open 详解
  19. 安装visio时遇到的问题
  20. 数据分析必会工具之SmartPLS

热门文章

  1. 【Beam Search】seq2seq中的beam search算法过程
  2. 通俗易懂理解Attention机制
  3. 灵活地横向扩展:从文件系统到分布式文件系统
  4. 字节、快手、阿里、腾讯这两年的广告推荐技术进展
  5. 博文视点程序员读书节,大咖带你共读十日精彩
  6. 区块链开源框架 HyperLedger Fabric 学习思路分享
  7. AmS中的一些重要调度相关变量
  8. 深入灵魂的共鸣 (《梦断代码》读后感)
  9. linux和windows下安装python拓展包及requirement.txt安装类库
  10. win7 下安装python用的dlib库