混合树——Blend Tree

作者:追风剑情 发布于:2017-6-25 18:31 分类:Unity3d

官方文档 https://docs.unity3d.com/Manual/class-BlendTree.html

利用Mecanim的混合树可实现两种动画状态之间的渐变。

一、在Animator窗口点右键

1111.png

2222.png

二、双击Blend Tree进行编辑

333333.png

三、在Parameters列表中创建名叫Walk的Float变量。

4444.png

四、选中Blend Tree,在Object Inspector面板进行设置。

(1)Blend Type选择2D Freeform Cartesian
(2)Parameters参数设置Walk
(3)点加号添加两个动画字段,并设置值。

2D Simple Directional:最好在运动表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄准”、“向下瞄准”、“向左瞄准”和“向右瞄准”)时使用。根据需要可以包括位置 (0, 0) 处的单个运动,例如“空闲”或“瞄准”。在 Simple Directional 类型中,在同一方向上_不_应该有多个运动,例如“向前走”和“向前跑”。
2D Freeform Directional:运动表示不同方向时,也使用此混合类型,但是您可以在同一方向上有多个运动,例如“向前走”和“向前跑”。在 Freeform Directional 类型中,运动集应始终包括位置 (0, 0) 处的单个运动,例如“空闲”。
2D Freeform Cartesian:最好在运动不表示不同方向时使用。凭借 Freeform Cartesian,X 参数和 Y 参数可以表示不同概念,例如角速度和线速度。一个示例是诸如“向前走不转弯”、“向前跑不转弯”、“向前走右转”、“向前跑右转”之类的运动。
Direct:此类型的混合树让用户直接控制每个节点的权重。适用于面部形状或随机空闲混合。

55555.png

111.png时钟影响动画播放速度(比如2就是原始速度的两倍)

2222.png镜像(使动画左右翻转)

五、调整Walk不同的值,在预览窗口查看动画效果

7777.png

6666.png

六、编写脚本控制动画


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 基于Mecanim Blend Tree的脚本机制
/// </summary>
public class CharControl : MonoBehaviour {

    private Animator thisAnimator;
    //转成整型,可提高代码执行速度。
    private int walkFloat = Animator.StringToHash("Walk");

    private float t;

    void Awake()
    {
        thisAnimator = GetComponent<Animator>();
    }

	void Update () {
        t += 0.01f;
        //t的值从0逐渐加到1,动画从自然态逐渐变为走动态
        thisAnimator.SetFloat(walkFloat, t);
	}
}


标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号