动作游戏

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

而现在这些功能使用Unity3D的Mecanim都可以非常简单的实现了!

这篇笔记主要记录下Mecanim的3个高级功能:

  1. Animation Curve:可以根据动画的运行时间自定义一条曲线,在播放动画时可以获得这条曲线对应的值,可以实现跳跃穿过小洞的功能;
  2. Target Match:匹配一个预先定义好的点进行动画播放,可以实现人物攀爬的功能;
  3. Animation Record:可以对动画进行录制,然后可以播放录制好的动画,可以实现时之沙的时光倒流功能;

可以说Unity3D现在已经具备了开发一款媲美国际大厂的动作游戏的能力了。

Animation Curve

这里我们直接使用官网给出的示例,打开场景Scale Capsule:

运行游戏,我们发现此时人物是不能通过跳跃穿过墙上的小孔的:

原因很简单,人物的胶囊碰撞体比小孔要大。当我们勾选了右上角的Apply Scale之后,再跳跃试试看:

此时我们发现当人物跳跃时,胶囊碰撞体就会进行缩小,而我们的人物就可以钻过这个小洞了,在跳跃之后胶囊体会进行恢复。

我们找到动画文件Dive,就可以看到其设置了两个Curve:

而其中的ScaleOffsetCapsule就是用来控制胶囊体缩放的曲线,我们可以发现其呈现了1->0->1的一个区间。

然后我们看看参数的设置:

参数必须是Float类型同时名称必须和动画文件中的Curve名称一致,这样当我们播放跳跃动画时该参数就会根据预设好的曲线来取值了,注意该参数后方的输入框已经禁用了,不能输入。

最后我们看下脚本ScaleCapsule的实现:

通过每帧获取参数的值来实现跳跃的碰撞体变小的功能。

Target Match

核心是使用到了Animator的MatchTarget方法,帮助如下:

http://docs.unity3d.com/ScriptReference/Animator.MatchTarget.html

这里我们还是直接使用官网给出的示例,打开场景Target Match:

我们发现在箱子上方已经做好了一个目标点,我们的人物的右手会匹配到这个点进行动画播放。

需要注意的是,使用MatchTarget的动画必须位于Base Layer层。Match Target会将我们人物的一个部位的位置和目标点的位置进行插值来移动我们人物,结果就是可以通过一个指定高度的攀爬动画来匹配任意高度的攀爬。

我们看下调用的脚本:

 // Update is called once per frame
void Update ()
{ if (animator)
{
AnimatorStateInfo state = animator.GetCurrentAnimatorStateInfo(); if (Input.GetButton("Fire1")) animator.SetBool("Jump", true); if (state.IsName("Base Layer.JumpUp") || state.IsName("Base Layer.FullJump"))
{
animator.SetBool("Jump", false); animator.MatchTarget(RightHand.position, RightHand.rotation, AvatarTarget.RightHand, new MatchTargetWeightMask(new Vector3(, , ), ), animator.GetFloat("MatchStart"), animator.GetFloat("MatchEnd"));
hasJumped = true;
} if (hasJumped && state.normalizedTime > 1.2)
{
hasJumped = false;
Application.LoadLevel();
}
}
}

Animation Record

Unity3D的Animator类为我们提供了4个方法用于录制和播放动画:

同时我们也可以通过访问Animator提供的一些属性来了解动画录制的一些信息:

使用比较简单就不做示例展示了,需要注意的时,回放录制的动画时人物会回到开始录制的坐标点,而不是在当前坐标点开始播放。

Unity3D之Mecanim动画系统学习笔记(十一):高级功能应用的更多相关文章

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

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

  2. Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)

    认识Blend Tree 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下: 那么我们看下新创建的Blend Tree和State有什 ...

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

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

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

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

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

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

  6. Unity3D之Mecanim动画系统学习笔记(五):Animator Controller

    简介 Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能: 可以对多个动 ...

  7. Unity3D之Mecanim动画系统学习笔记(四):Animation State

    动画的设置 我们先看看Animation Clip的一些设置: Loop time:动画是否循环播放. 下面出现了3个大致一样的选项: Root Transform Rotation:表示为播放动画的 ...

  8. Unity3D之Mecanim动画系统学习笔记(三):Animation View

    动画组件之间的关系 我们先看一张图: 这里我们可以看到,我们在GameObject之上绑定的Animator组件是控制模型进行动画播放的. 而其属性Controller则对应一个Animator Co ...

  9. Unity3D之Mecanim动画系统学习笔记(八):Animator Layers(动画分层)

    解决什么问题? 动画分层可以用来解决什么样的问题呢?试想一下如果你要开发一款第三人称的射击游戏,那么肯定是希望身体的动画分为上下两部分,上方根据瞄准的位置和是否射击进行动画播放,下方根据移动播放动画. ...

随机推荐

  1. ACM - ICPC World Finals 2013 C Surely You Congest

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 试题来源 ACM/ICPC World Fin ...

  2. c#(.net) 导出 word表格

    做了差不多一周的导出Word,现在把代码贴出来   : ExportWord.cs using System; using System.Collections.Generic; using Syst ...

  3. org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir异常解决方法

    myeclipse用svn提交的时候报错: Attempted to lock an already-locked dir svn: Working copy 'D:/Program Files/My ...

  4. C#4.0新特性(3):变性 Variance(逆变与协变)

    一句话总结:协变让一个粗粒度接口(或委托)可以接收一个更加具体的接口(或委托)作为参数(或返回值):逆变让一个接口(或委托)的参数类型(或返回值)类型更加具体化,也就是参数类型更强,更明确. 通常,协 ...

  5. Android中shape中的属性大全

    ---恢复内容开始--- <shape> <!-- 实心 --> <solid android:color="#ff9d77"/> <!- ...

  6. java读取照片信息 获取照片拍摄时的经纬度

    项目结构 源码:ImageInfo.zip 第一步:添加需要的架包metadate-extractor.jar 架包下载地址:https://code.google.com/p/metadata-ex ...

  7. dpkg-query

    1.功能作用 查看软件包信息 2.位置 /usr/bin 3.格式用法 dpkg-query [<选项> ...] <命令> 4.主要参数 Commands: -s|--sta ...

  8. K2 blackpearl 安装

    转:http://blog.csdn.net/gxiangzi/article/details/8432188 K2是国外的一款BPM引擎,基于MS的Workflow,关于它的详细介绍在我之前一片博客 ...

  9. asp调用.net xml web services

    来源:http://www.cnblogs.com/notus/archive/2006/08/10/473000.html#2662503 (是不是实际上可以用这个办法调用任何xml web ser ...

  10. Drawer Layout

    http://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout <menu ...