官方 Animator 例子解析 Animator.MatchTarget

一、官方的解释

 1 Animator.MatchTargetSwitch to Manual
 2 void MatchTarget(Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, float startNormalizedTime, float targetNormalizedTime = 1);
 3 Parameters
 4
 5 matchPosition    The position we want the body part to reach.
 6 matchRotation    The rotation in which we want the body part to be.
 7 targetBodyPart    The body part that is involved in the match.
 8 weightMask    Structure that contains weights for matching position and rotation.
 9 startNormalizedTime    Start time within the animation clip (0 - beginning of clip, 1 - end of clip).
10 targetNormalizedTime    End time within the animation clip (0 - beginning of clip, 1 - end of clip), values greater than 1 can be set to trigger a match after a certain number of loops. Ex: 2.3 means at 30% of 2nd loop.
11 Description
12
13 Automatically adjust the gameobject position and rotation so that the AvatarTarget reaches the matchPosition when the current state is at the specified progress.
14
15 Target matching only works on the base layer (index 0).

二、理解

这个 一般 用于 根运动 动画。 可以用在 人物攀爬 或者 掉落 的动画 时候 进行一些 位置的调整。具体在于理解。上一段官方的例子教程。

 1 using UnityEngine;
 2 using System.Collections;
 3
 4 public class TargetMatching : MonoBehaviour
 5 {
 6
 7     private Animator animator;
 8     /// <summary>
 9     /// 匹配 目标
10     /// </summary>
11     public Transform RightHand;
12     bool hasJumped = false;
13
14
15     // Use this for initialization
16     void Start () {
17
18         animator = GetComponent<Animator>();
19
20     }
21
22     void OnGUI()
23     {
24         GUILayout.Label("Make your character grab any edge!");
25         GUILayout.Label("Press Fire1 to trigger Jump animation");
26         GUILayout.Label("Added *MatchStart* and *MatchEnd* parameters to the Animator Controller");
27         GUILayout.Label("Added *MatchStart* and *MatchEnd* additionnal curves to the Idle_ToJumpUpHigh animation");
28         GUILayout.Label("*MatchStart* and *MatchEnd* tell the system when to start cheating the root using MatchTarget API");
29         GUILayout.Label("Added a RightHand model child of the MoveThis container, to tell where the right hand should go");
30         GUILayout.Label("On the update function, we call MatchTarget");
31         GUILayout.Label("Translate the MoveThis object and see how character‘s hand always reach it");
32     }
33
34     // Update is called once per frame
35     void Update ()
36     {
37
38         if (animator)
39         {
40             AnimatorStateInfo state = animator.GetCurrentAnimatorStateInfo(0);
41
42             if (Input.GetButton("Fire1")) animator.SetBool("Jump", true);
43
44             if (state.IsName("Base Layer.JumpUp") || state.IsName("Base Layer.FullJump"))
45             {
46                 animator.SetBool("Jump", false);
47
48                 animator.MatchTarget(
49                     RightHand.position,
50                     RightHand.rotation,
51                     AvatarTarget.RightHand,
52                     new MatchTargetWeightMask(new Vector3(1, 1, 1), 0),
53                     /// 动画 曲线 获取
54                     animator.GetFloat("MatchStart"),
55                     animator.GetFloat("MatchEnd"));
56                 hasJumped = true;
57             }
58
59             if (hasJumped && state.normalizedTime > 1.2)
60             {
61                 hasJumped = false;
62
63                 Application.LoadLevel(0);
64             }
65
66             Debug.Log(" animator.GetFloat MatchStart " + animator.GetFloat("MatchStart") + " state.normalizedTime " + state.normalizedTime);
67         }
68
69     }
70 }
时间: 2024-12-16 14:44:40

官方 Animator 例子解析 Animator.MatchTarget的相关文章

Poco库网络模块例子解析1-------字典查询

Poco的网络模块在Poco::Net名字空间下定义   下面是字典例子解析 #include "Poco/Net/StreamSocket.h" //流式套接字 #include "Poco/Net/SocketStream.h" //套接字流 #include "Poco/Net/SocketAddress.h" //套接字地址 #include "Poco/StreamCopier.h" //流复制器 #include

google官方架构MVP解析与实战-(从零开始搭建android框架系列(3))

最近更新2016.5.10(已经添加整个项目目录.更新新闻资讯) 本篇文章项目github地址:MVPCommon 本文章原地址:简书博客 1 前言 当然对于MVP的解说也是使用也是层出不穷,我也网络上也能看到各种版本的解说,之前博客也有文章的更新,里面有MVP的详细说明和项目代码->Android中的MVP模式,带实例. 本篇文章将参考 google官方android MVP架构项目的实现,来实现自己的项目.或许看了这篇文章之后,你再去梳理一下google官方架构项目,会让你收获更多.官方的实

Google官方架构MVP解析与实战进阶必学系列

1 前言 当然对于MVP的解说也是使用也是层出不穷,我也网络上也能看到各种版本的解说,之前博客也有文章的更新,里面有MVP的详细说明和项目代码--->Android中的MVP模式,带实例. 本篇文章将参考 google官方android MVP架构项目的实现,来实现自己的项目.或许看了这篇文章之后,你再去梳理一下google官方架构项目,会让你收获更多.官方的实例肯定具有更好的权威性. 推荐关注安卓各种架构相关文章合集github地址:AndroidArchitectureCollection

NDK的OpenGLes2.0 官方例子解析

提要 NDK自带了一个OpenGLes的例子,下面就一起来学习一下. 环境:Ubuntu14.04 NDK r10 ADT13.02 Android Native Development Tools 8.12 注:在ubuntu的adt需要手动安装Android Native Development Tools才能很好的支持NDK. 如果你对Java调用C/C++的代码还不了解,可以参考:JNI原理及实现 利用JNI进行对象操作 如果你对NDK还不了解,可以参考:Android的NDK开发(1)

如何更高效的使用MVP以及官方MVP架构解析

转载请标明出处: http://blog.csdn.net/dantestones/article/details/51445208 Android mvp 架构的自述中我简单的介绍了mvp,以及怎么写mvp.我自己也将mvp运用到了项目中,其实mvp并没有固定的写法,正确的去理解架构的思想,都可以有自己独特的mvp写法.git上也有很多例子,比如google的android-architecture,simple哥的Android 源码设计模式解析与实战中也有mvp的讨论.这里参考了simpl

Poco C++库网络模块例子解析2-------HttpServer

//下面程序取自 Poco 库的Net模块例子----HTTPServer 下面开始解析代码 #include "Poco/Net/HTTPServer.h" //继承自TCPServer 实现了一个完整的HTTP多线程服务器 #include "Poco/Net/HTTPRequestHandler.h" //抽象基类类 被HttpServer所创建 用来处理Http的请求 #include "Poco/Net/HTTPRequestHandlerFac

【FacebookSDK学习笔记】Facebook官方Demo例子简单分析

1· FriendPickerSample -选择好友,但是这个demo的好友列表是空白的,要在Scrumptious 这个demo例子中的Pick Friends才可以看到完整的效果. 2· PlacePickerSample - 可以选择登陆的地点 选择地点后分享成果: 3.SwitchUserSample -可以变更账户的例子,即多账户切换. 4.AdUnitsSample and NativeAdSample-在你的app中嵌入广告.官方的demo直接运行是不能加载广告的,因为"Plac

Formik官方应用案例解析(二)同步校验

简介 官方示例工程formik-09x-synchronous-validation-example展示的是基于Formik的表单开发中如何进行定制的同步校验的问题. 上一个实例相关内容回顾 回顾一下第一个示例Basics,其中有下面代码: const EnhancedForm = withFormik({ mapPropsToValues: () => ({ email: '' }), validationSchema: Yup.object().shape({ email: Yup.stri

Formik官方应用案例解析(三)使用react-select

react-select简介 React-Select是github上一个极其火的控件库,星数达到13004,它是React开发中几乎是你必需打交道的一个内容.React Select的基本功能实现的是一个表单中的常见的下拉列表框控件,其实它的功能扩展来看远远不止如此,它支持: 多选 样式定制 多级联动选择 异步加载 等等.但是,如果在你的开发中使用的是一个很基础性的下拉列表框,那么你可以直接使用类似于Semantic UI或者是Material React控件库的Select组件,甚至是最基本