blend tree - CSDN
  • Blend Trees 在游戏动画中一个常见的任务是将两个或多个相似的动作混合在一起. 也许最著名的例子就是根据角色的速度混合行走和跑步的动画.另一个例子是一个角色在跑步时向左或向右倾斜,就是根据参数来觉混合动画,...

    Blend Trees

    在游戏动画中一个常见的任务是将两个或多个相似的动作混合在一起. 也许最著名的例子就是根据角色的速度混合行走和跑步的动画.另一个例子是一个角色在跑步时向左或向右倾斜,就是根据参数来觉混合动画,决定当前播放的是哪个动画

    Transitions and Blend Trees的不同:

    • Transitions是从一个state过渡到另一个state.

    • Blend Trees 通过混合参数来混和多个动画. Blend Trees 是动画状态机的一个特殊的state。 Animation State Machine

    类似动作的例子可以是各种各样的walk和run动画. 为了使过渡效果更好,剪辑中的动作必须在标准时间的相同点上发生.比如,没跑步和行走它们在某一时刻的脚应该在同一个位置,这样混合的就不叫平滑,而不会出现脚在地上滑行的情况

    Using Blend Trees

    To start working with a new Blend Tree, you need to:

    1. 右键 Create State > From New Blend Tree
    2. 双击 Blend Tree 进入 Blend Tree 视图,在.Blend Tree 视图双击空白处,回到base视图
    3. 通过选中Blend Tree 在属性面板上点击+号添加动画片段或者右键Blend Tree 添加动画片段

     

    1D Blending

    Inspector中的第一个选项就是 Blend Type. 按照需要的blend 参数来分,分为1D和2D,1D就是需要一个混合参数

    设置完Blend Type后,选择一个 Animation Parameter 作为混合参数,来控制 Blend Tree. 比如这里是direction 表示–1.0 (left) and +1.0 (right)之间的差异.

    你可以自定混合参数,通过添加Animation Parameter,但是混合参数必须是float类型的

    检查器顶部的图表显示了当参数在其最小值和最大值之间变化时,每个动画的影响.每个运动都显示为一个小的蓝色金字塔(第一个和最后一个只显示了一半),如果你点击并按住鼠标左键,相应的运动在下面的运动列表中突出显示. 每个金字塔的顶点都定义了运动具有完全影响力的参数值,即其动画权值为1,其他动画权值为0。这也被称为运动的阈值. threshold

    The diagram at the top of the Blend Tree Inspector visualizes the weights of the child motions over the range of the parameter values.

    Parameter Range

    参数的范围被是图表中的左右两个数,这个范围可以通过点击左右两边的数字更改它 ,比如上面的是-1到1,可以点击数字,更改它的值,其实,最后一个motion的threshold就是它的最大值,第一个motion的threshold就是它的最小值

    Thresholds

    如果下面的 “Automate Thresholds” 属性没有勾选上的话,你可以自定义阈值,就是motion起作用的区间

    如果 “Automate Thresholds” 勾选上,unity默认以平局值得方法,过度每一个motion,比如有五个参数是 –90 to +90, thresholds 就会从–90, –45, 0, +45 and +90 得顺序

    The Compute Thresholds 选择从root motions,也就是从动画片段里面得参数里面获取混合参数的值
     它包括, velocity x, y, or z, and angular speed in degrees or radians. 如果你的参数需要和这些相关连,就使用下面的值

    Property: Function:
    Speed  根据动画片段的速度来定义threshold值(the magnitude of the velocity).
    Velocity X Sets the threshold of each motion according to its velocity.x.
    Velocity Y Sets the threshold of each motion according to its velocity.y.
    Velocity Z Sets the threshold of each motion according to its velocity.z.
    Angular Speed (Rad) Sets the threshold of each motion according to its angular speed in radians per second.
    Angular Speed (Deg) Sets the threshold of each motion according to its angular speed in degrees per second.

    比如:你可以看到一个每秒1.5个单位的步行动画,一个每秒2.3个单位的慢跑动画,以及一个每秒4个单位的跑步动画, 从下拉菜单中选择Speed选项将根据这些值为三个动画设置参数范围和阈值.因此,如果您将speed参数设置为3.0,它将混合jog和run,并对jog略有偏向。

    2D Blending

     Blend Type 为2D的选项,表示需要两个参数

    2D Simple Directional: 在同一个方向上只能有一个动画比如“walk forward”, “walk backward”, “walk left”, and “walk right”,或者 “aim up”, “aim down”, “aim left”, and “aim right”. Optionally a single motion at position (0, 0) can be included, such as “idle” or “aim straight”. In the Simple Directional t不能在同一方向上有多个动画,比如, such as “walk forward” and “run forward”.

    2D Freeform Directional: 在同一方向上可以有多个动画, for example “walk forward” and “run forward”. In the Freeform Directional type the set of motions should always include a single motion at position (0, 0), such as “idle”.

    2D Freeform Cartesian: 不管动画的方向,都是可以的. With Freeform CartesianX参数和Y参数可以代表不同的概念, 比如角速度和线速度. An example would be motions such as “walk forward no turn”, “run forward no turn”, “walk forward turn right”, “run forward turn right” etc.

    Direct:这种类型的混合树允许用户直接控制每个节点的权重。适用于面部形状或随机空闲混合。

    设置完Blend Type为2D后, 选择两个 Animation Parameters控制 Blend Tree.比如 velocityX (strafing) and velocityZ (forward speed).

     对应的,第一个参数控制posx,第二个参数控制posy,

     每个motion 都用一个棱形表示,拖动红点,表示当前参数的值,棱形的外围有个圆圈,表示红点在该位置是,该动画的权重或者说是影响范围

    Direct Blending

     Direct Blend Tree可以直接通过参数来控制动画播放的权重,在面部表情丰富的时候,可以使用这个,因为同时有可能做多个动作,比如皱眉,撅嘴.

     

    Additional Blend Tree Options

    The options below are common to both 1D and 2D blending.

    Time Scale

    顶部带有时钟图标的列,来更改动画剪辑的播放速度. The Adjust Time Scale > Homogeneous Speed 按钮重新调整剪辑的速度,使其与参数选择的最小值和最大值相一致,但保持与最初相同的相对速度。

    Note  Adjust Time Scale 只有当是 Animation Clips而不是child Blend Trees.才可以使用

    Mirroring

    可以镜像人形动画,节省内存 humanoid Animation

    Animator Override Controllers

     Animator Override Controller 就是复制一份Animator Controller,这样就可以用同一种结构,比如你的游戏可能有各种各样的NPC类型,但每种类型(地精、食人魔、精灵等)都有自己独特的动画,用于行走、闲荡、坐着等。它们动画的结构都是一样的,比如先行走,在坐下,但是动画片段不一样,这样就可以为每个怪物创建一个Animator Override Controller,使用相同的动画结构,但是动画片段不一样

    在Asset面板右键创建,它和Animator Controller很像,然后把需要复制的拖到上面

    然后,你可以为附加单独的动画片段

     它和普通的Animator Controller 一样使用

    Retargeting of Humanoid animations

    humanoid animations最重要的特点就是动画重定向,就是你可以把一样的动画设置应用到不同的角色身上
    ,重定向只对类人型的模型有用 humanoid models,并且配置了 Avatar

    Recommended Hierarchy structure

     下面是它的步骤:

     1.创建一个空物体添加上character collider组件

     2.在该物体下放置一个角色模型,挂上animator组件,并由自己的avatar,和animator controller

     3.上面的角色是用的是本身的动画结构,然后再给空物体放置一个类人型的角色,比如泰迪熊,关闭上一个角色模型,给泰迪熊的animator controller挂上上一个角色模型的animator controller,这样他俩就用的是一套动画结构和动画

     

    Performance and optimization:动画优化性能

    Animation system Controllers

     Animator 如果没有 Controller 挂在到它上面,不会消耗性能

    如果只包含一个简单的动画片段,用animation比用animator好,因为animator需要一个缓存,来缓存blend动画

    scale curves 缩放动画比移动和旋转动画要耗性能 translation and rotation curves.

    Note: 但是如果缩放动画,就是一个常量值,即动画曲线是一条水平线,他不会消耗性能

    Layers

    大多数时候Unity是评估动画,并保持动画层和动画状态机的开销最小. 向状态机添加一个新层,不管开没开启同步,他消耗的性能屈居于该层播放什么动画和使用什么blend tree,如果这一层的权重是0,则在更新时跳过这一层.

    Humanoid vs. Generic animation types

    下面是一些小技巧:

    • 在导入人形动画时, Humanoid animation,使用 Avatar Mask(class-AvatarMask) 去掉 IK Goals 或者 finger
    • 在导入通用动画时Generic, using root motion比较耗性能

    Scene-level optimization

    编写脚本时注意:

    • 使用hash表来访问animator的参数变量
    • Implement a small AI Layer to control the Animator. You can make it provide simple callbacks for OnStateChange, OnTransitionBegin, and other events.
    • Use State Tags to easily match your AI state machine to the Unity state machine.
    • Use additional curves to simulate events.
    • Use additional curves to mark up your animations; for example, in conjunction with target matching
       

    Runtime Optimizations

    设置 animators’s Culling Mode to Based on Renderers, and 关闭the skinned mesh renderer’s Update When Offscreen 属性.这样如果角色不在屏幕范围内,就会不更新动画

     

    Animator component

    The Animator component with a controller and avatar assigned.

    Properties

    Property: Function:
    Controller The animator controller attached to this character.
    Avatar The Avatar for this character. (If the Animator is being used to animate a humanoid character)
    Apply Root Motion Select whether to control the character’s position and rotation from the animation itself or from script.
    Update Mode 这允许您选择动画器何时更新,以及应该使用哪个时间刻度。
      Normal The Animator 和Update 一起更新,动画的速度和当前的timescale匹配,如果timescale 变小,动画也会播放的慢
      Animate Physics The animator和 FixedUpdate 同步,也就是物理系统,如果动画需要和物理系统交互,使用这个模式. ,比如角色可以推动 rigidbody物体
      Unscaled Time The animator is updated in-sync with the Update call, but the animator’s speed ignores the current timescale and animates at 100% speed regardless. This is useful for animating a GUI system at normal speed while using modified timescales for special effects or to pause gameplay.
    Culling Mode Culling mode you can choose for animations.
      Always Animate 始终播放动画,即使角色不在屏幕内
      Cull Update Transforms 当这些物体的(重定向Retarget, IK and write of Transforms )render关闭时,不更新
      Cull Completely 当渲染器不可见时,动画将完全禁用

     

    Animation transitions

    Animation transitions 就是各个动画片段之间的连线. 就是从一个状态转向另一个状态. 你可以为它设置条件

    例如,你的角色可能有一个“巡逻”动画和一个“睡眠”动画。您可以将巡逻和睡眠之间的转换设置为仅在“alert”参数值低于某一水平时发生。

     也可以给转换命名:

    Transition properties

    Property Function
    Has Exit Time Exit Time 是一个不依赖于condition的特殊的参数. 它代表了动画的标准化时间,就是表示的是百分比 Exit Time.
    Settings Fold-out menu containing detailed transition settings as below.
    Exit Time 如果勾选上Has Exit Time ,这个值表示,动画播放到什么多少的时候开始转换到下一个动画. 比如0.75就表示该动画播放到75%的时候,就开始转换.

    对于循环动画,exit time小于 1的效果比较好

    如果Exit Time大于1 ,比如 3.5 ,表示进行3圈半的循环.
    Fixed Duration 如果打开 Fixed Duration , 转换时间以秒为单位进行解释. 如果关闭 Fixed Duration 转换时间以动画的绝对时间计算
    Transition Duration 转换的时间,取决于当前动画的时间. 在过渡图中,可以将其可视化为两个蓝色标记之间的部分。
    Transition Offset 在转换为目标状态时开始播放的时间偏移量。例如,0.5的值表示目标状态在其自身时间轴的50%处开始播放
    Interruption Source 利用这一点来控制这种转换可能被中断的情况
    Ordered Interruption 当前转换能否被其他转换打断,不根据顺序
    Conditions 一个转换可以有一个条件,多个条件,甚至没有条件,当没有条件的时候, Exit Time就会起作用,也就是说没有条件的时候,当动画播放到exit time的时候,才会转换到下一个动画, 如果有条件,转换必须在条件达到时才会触发

     如果勾选上Has Exit Time且有条件,  Unity Editor 会优先考虑exit time ,即当动画播放到exit time的时候,才会考虑条件是不是满足,从而决定转换到下一个动画

    Transition graph

    To manually adjust the settings listed above, you can either enter numbers directly into the fields or use the transition graph. The transition graph modifies the values above when the visual elements are manipulated.

     这是转换图的解释很清楚了有没有,恩?baby

     

    展开全文
  • 认识Blend Tree我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下:那么我们看下新创建的Blend Tree和State有什么区别:唯一的区别就是Montion指向的类型变成了Blend Tree类型,...

    认识Blend Tree

    我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下:

    那么我们看下新创建的Blend Tree和State有什么区别:

    唯一的区别就是Montion指向的类型变成了Blend Tree类型,那么一个Blend Tree其实也就是一个状态,和状态不同的地方就是一个状态只能设定一个动画,而一个Blend Tree则可以设定为多个动画的混合。

    混合树是Mecanim动画系统中比较复杂的一个内容,且其分为多个维度,下面我们逐个的来进行学习。

    一维混合树

    我们以官方的例子使用一维混合树来实现下面的效果:我们人物的跑动分为3个动画,分别是向前跑、向左跑和向右跑,其中向左跑和向右跑人物都会有一定的倾斜,这样更加符合现实的情况,那么我们在状态机中跑动只有一个状态,所以我们的跑动需要设置为混合树来混合这3个动画。

    首先我们需要创建一个新的场景,拖入我们的人物模型,然后创建一个Animator Controller并对其进行配置:

    注意我们的Run是Blend Tree而不是State,双击Run就可以进入混合树的编辑界面。

    右击我们的混合树添加3个Motion,如下:

    同时我们设定好3个方向的跑动动画:

    我们还需要设定一个名为Direction的Float类型的参数来控制这个混合树:

    接下来我们取消Automate Thresholds的选项,并按下图进行选择,系统会为我们配置好阀值:

    现在我们点击预览框查看动画播放时就可以通过拖拽小红线来看不同的变化了,我们的可使用的角度范围为-130到130之间。

    到现在我们的动画控制器就配置好了。

    脚本

    下面我们使用脚本来控制一下人物,我们给人物添加下面的脚本即可:

    复制代码
    复制代码
     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class TestBlendTree : MonoBehaviour
     5 {
     6     public float DirectionDampTime = 30.0f;
     7 
     8     private Animator _animator;
     9 
    10     void Start()
    11     {
    12         _animator = this.GetComponent<Animator>();
    13     }
    14     
    15     void Update()
    16     {
    17         if(Input.GetKeyDown(KeyCode.W))
    18         {
    19             _animator.SetBool("run", true);
    20         }
    21         if(Input.GetKeyUp(KeyCode.W))
    22         {
    23             _animator.SetBool("run", false);
    24         }
    25 
    26         AnimatorStateInfo state = _animator.GetCurrentAnimatorStateInfo(0);
    27         //奔跑状态下才允许转弯
    28         if(state.shortNameHash == Animator.StringToHash("Run"))
    29         {
    30             //指定人物转弯通过控制混合数的参数即可
    31             float h = Input.GetAxis("Horizontal") * 130.0f;
    32             //DirectionDampTime 指示了每秒可以到达的最大值
    33             //deltaTime 表示当前帧的时间
    34             _animator.SetFloat("Direction", h, DirectionDampTime, Time.deltaTime);
    35         }
    36         else
    37         {
    38             //重置一下参数
    39             _animator.SetFloat("Direction", 0);
    40         }
    41     }
    42 }
    复制代码
    复制代码

    为了让摄像机跟随人物,我们直接添加官方给出的这个脚本到摄像机上即可:

    复制代码
    复制代码
     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class ThirdPersonCamera : MonoBehaviour
     5 {
     6     public float distanceAway;            // distance from the back of the craft
     7     public float distanceUp;            // distance above the craft
     8     public float smooth;                // how smooth the camera movement is
     9     
    10     private GameObject hovercraft;        // to store the hovercraft
    11     private Vector3 targetPosition;        // the position the camera is trying to be in
    12     
    13     Transform follow;
    14     
    15     void Start(){
    16         follow = GameObject.FindWithTag ("Player").transform;    
    17     }
    18     
    19     void LateUpdate ()
    20     {
    21         // setting the target position to be the correct offset from the hovercraft
    22         targetPosition = follow.position + Vector3.up * distanceUp - follow.forward * distanceAway;
    23         
    24         // making a smooth transition between it's current position and the position it wants to be in
    25         transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * smooth);
    26         
    27         // make sure the camera is looking the right way!
    28         transform.LookAt(follow);
    29     }
    30 }
    复制代码
    复制代码

    记得将人物的Tag设置为Player,同时脚本也要设置一下:

    动画方面的一点要求

    每个混合树的动画有一些要注意的地方:

    1. 动画长度需要一致;
    2. 动画的起始姿势需要一致;

    二维混合树

    同1维混合树,不过二维混合树已经作为一个平面来处理,同时需要两个参数来进行控制。对于更复杂的动画融合可以使用该模式,这里就不深入学习了。

    我们可以将两个1维混合树合并为一个2维混合树来控制。

    多维混合树

    多维混合树在Unity5时添加,其配置更加复杂,一般使用在脸部表情的动画融合上。

    展开全文
  • unity动画之BlendTree

    千次阅读 2017-04-24 12:41:44
    实现的效果:人物在跑的状态下,才能进行转弯操作,和跳起动作。  1: unity中的动画混合树可以将几个动画文件很好的融合在一起:  参数Direction是浮点类型。上面概述为:动画状态可以是单个的动画文件,也可以...


                          实现的效果:人物在跑的状态下,才能进行转弯操作,和跳起动作。

       1:  unity中的动画混合树可以将几个动画文件很好的融合在一起其中Run是状态树:                                                                                                                                                                                                                                                        

                                                                                            

              参数Direction是浮点类型。上面概述为:动画状态可以是单个的动画文件,也可以是由动画文件融合成的状态树。勾选automate threshold可以修改thresl临界值


          2:第一步已经在unity面板中把先关参数配置好了,现在就需要用脚本来设置相关参数条件的实现。

    using UnityEngine;
    using System.Collections;
    
    public class BlendTree : MonoBehaviour {
    
        protected Animator animator;
        public float DirectionDamoTime = 0.25f;
    	void Start () {
            animator = GetComponent<Animator>();
    	}
    	
    	
    	void Update () {
    	
            if(animator)
            {
                AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
                if (stateInfo.IsName("Base Layer.Run"))//注意这里必须是Base Layer.Run   Base Layer是动画层的名称,用.的形式引出当前准备切换动画的动画状态名称
                {
                    if (Input.GetKeyDown(KeyCode.Space))
                        animator.SetBool("Jump", true);
                }
                else
                {
                    animator.SetBool("Jump", false);
                }
                //在奔跑时才可以水平旋转
                float horizontal = Input.GetAxis("Horizontal");
                animator.SetFloat("Direction", horizontal, DirectionDamoTime, Time.deltaTime);
               
                //控制idle到跑状态的切换
                if (Input.GetKeyDown(KeyCode.W))
                {
                    animator.SetFloat("Blend", 1.0f);
                }
                else if (Input.GetKeyUp(KeyCode.W))
                {
                    animator.SetFloat("Blend", -0.1f);
                }
            }
    	}
    }
    

    3:基本概念,第二个参数如果变为负值可以修改动画运动的方向。动画混合树,实际上也是一个动画状态单元,和普通的动画状态不同的是,他可以混合多个动画。

    4:在BlendTree 的2D融合图中:

                                                                    

    设置为-1  可以让动画反向播放,在有向前走而没有向后走的动画时。


    5:2D融合图的操作步骤:

                1:在动画控制器中,建立默认状态为BlendTree


                2:type选择2D,parameter自己创建参数,此参数会在脚本中运用到,并将四个动画文件子对象的相关位置设置好之后,在unity面板中的配置就完成了:


               3:脚本的控制:

    using UnityEngine;
    using System.Collections;
    
    public class BlendTree2D : MonoBehaviour {
    
        private Animator ani;
        public float xDampTime = 1.0f;
        public float yDampTime = 1.0f;
    
        //动画参数的系数
        float xVal = 1.5f;
        float yVal = 1.5f;
    
    	void Start () {
            ani = gameObject.GetComponent<Animator>();
    	}
    	
    
    	void Update () {
    	
            if(ani)
            {
                float h = Input.GetAxis("Horizontal");
                float v = Input.GetAxis("Vertical");
    
                ani.SetFloat("ValX", h, xDampTime, Time.deltaTime);
                ani.SetFloat("ValY", v, yDampTime, Time.deltaTime);
            }
    	}
    }
    

              这样就能很好的对角色进行,前进,后退,左右运动的控制了。

    4:数值的大小,影响着动画播放的快慢。越小播放越快。。动画融合就是设置权重的大小将动画进行融合

    展开全文
  • Unity动画系统-Blend Tree

    千次阅读 2017-01-16 23:41:01
    Blend Tree-动画混合树 作用:将多个动画融合在一起,按条件触发。 创建混合树:在动画状态机中:右键->Create->Blend Tree 双击进入混合树,看右边的属性 Blend Type:混合的类型,三种类型 1D:一维混合 ...
    

    Blend Tree-动画混合树


    作用:将多个动画融合在一起,按条件触发。

    创建混合树:在动画状态机中:右键->Create->Blend Tree

    双击进入混合树,看右边的属性

    Blend Type:混合的类型,三种类型

    1D:一维混合 需要一个参数 (下面)

    2D:两个参数

    自由混合:多个参数

    1).

    通过1D混合融合人物的Idle、Walk、Run动作

    首先创建一个过渡条件Float类型的speed

    speed来控制人物的Idle Walk Run

    在混合树属性中:参数选择speed

    添加三个动作、将三个动画剪辑拖进去。

    将动画拖进去以后,我们会看到我们的根节点中多出了三条连接出来的子节点,也就是我们的动作。

    参数speed,是我们设置的参数,必须是float类型的。我们就是通过这个参数来实现动作的切换。

    对于1D混合,只需要一个参数。

    我们需要修改每一个动作切换所需要的预值。

    这个图的含义,我们可以把横轴看做是float值,当我们点击一块区域,下面的动作也会高亮显示,也就说明第一个动作是随着时间慢慢减弱的

    三角区域就代表这个动作的权重(竖轴代表权重)

    也就是说当时间达到某一点时,Idle的权重可能是0.8,此时下面还有一个交点,是Walk的权重,是0.2 所以此时如果动画运动的时候,就是Idle的动画幅度更大一点。

    我们可以将Idle设为0 walk设为0.5 Run设为1,这样就将三个动作三等分。

    此时我们就可以通过代码获取float的值,来自动的修改动画。

    使用动画混合树和我们之前动画的区别就是,在某一个float值得时候,有可能是两个动作都在执行。基本的状态过渡就无法实现。

     2).

    使用2D混合控制人物的Walk、run、idle、walkleft、walkright

    2D混合有三种选择,一般只使用第三种

    第一种,普通的混合,在一个方向上只能有一个动作,比如跑和走 就不能融合到一起

    第二种,可以在同一方向设置两个,但是必须在原点有一个Idle状态,并且对旋转有一定限制。

    第三种 没什么限制

    首先创建两个过渡条件都是float类型。

    分别添加向前 向后 向左 向右 run idle 动作。

    因为我们用的是2D混合,所以不能用时间轴来表示,上面的表也变成了笛卡尔坐标系。每一个菱形代表一个状态

    设置两个过渡条件

    接着给各个动作添加预值

    除了手动设置值以外,我们还可以让系统根据动作的速度来自行计算。

    3).自由融合,随意添加参数。

    展开全文
  • 摘要:“Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树。” 洪流学堂,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来...
  • Unity5.x Animator之BlendTree

    万次阅读 2016-12-12 17:36:03
    混合树 (Blend Tree) 游戏动画中的一个常见任务是在两个或更多相似运动之间混合。最佳的已知示例可能是根据角色速度混合行走和奔跑动画。另一个示例是角色在奔跑过程中转弯时向左或向右倾斜。 重要的是区分转换 ...
  • Unity中的BlendTree的简单使用

    千次阅读 2017-12-26 14:57:14
    2,在Run的动画状态机中添加BlendTree, 选中Run,然后鼠标右键,点击Create new BlendTree in State.  移除点击此处添加图片说明文字 ​3,进入BlendTree中,双击Run这个动画状态机之后就进入到了  移除...
  • 1、混合树 在游戏中,游戏角色有时候并不精确地处在某一个状态中,如站立与行走之间的过渡。状态转换是从一个状态平滑转换为另一个状态的一个过程。...From New Blend Tree。来创建一个新的混合...
  • 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下:那么我们看下新创建的Blend Tree和State有什么区别:唯一的区别就是Montion指向的类型变成了Blend Tree类型,那么一个Blend ...
  • 1、a、将Blend TreeBlend Type设置为2D Freeform Directional,下方的两个参数代表:我们将通过控制这两个参数,来控制角色两个方向的运动    上节的Idle-Walk-Run仅为一个方向上的运动,若前进中相左向右转,...
  • unity animator BlendTree1

    2019-10-07 14:12:28
    我使用blendtree让角色进行跑,向左转,向右转,跳跃的的功能,但角色其他动画播放正常,只要转向就在原地不动了 原因:动画播放完了就不动了,设置下loop属性就行了。 使用blendtree 1 动画如果只在原地运动,...
  • 功能效果: 所有动作的过渡都是平滑的 仅按下方向键时,角色行走,可由自然状态下过渡到行走动作 按下shift+方向键时,角色奔跑,可由自然状态下...关于blend tree这里不做多介绍,animator controller如下: ...
  • Unity Animator BlendTree

    2018-10-22 16:42:44
    Unity Animator BlendTree 创建 Animtor Controller 命名为 BlendTreeController, 双击打开 空白处鼠标右键 Create State -&gt; From New Blend Tree 默认名为 Blend Tree,选择 Blend Tree 查看 Inspector ...
  • Blend Tree用于多个动画之间的混合,比如走到跑的切换、转弯的切换。 如果用动画学习笔记(3)中的方法,需要新建很多的状态,不仅麻烦,而且切换状态时也很容易不流畅。 而Blend Tree就很好的解决了这个问题 2. 1D ...
  • 记录一下BlendTree的简单使用和说明,这里只针对二维动画的使用 先添加一个动画控制器,添加一个空的动画名字叫Run: 然后右键点击Run,添加一个BlendTree: 右键添加的BlendTree添加动画,赋值: 设置...
  • 一、Blend Tree介绍及应用 一个游戏动画的基本任务就是将两个或多个相似的动作混合。也许最广为人知的例子就是依照任务行动的速度将行走和跑动动画混合起来了。另一个例子就是角色在跑动中向左或向右转身。 如何...
  • 在Animator视图,空白处 鼠标右键 Create State--From New Blend Tree 选择刚才 新建的 Blend Tree ,鼠标选中 Blend Tree 并 左键双击 如下图所示,鼠标右键 添加 Motion ,Add Motion 选中Blend ...
1 2 3 4 5 ... 20
收藏数 2,309
精华内容 923
热门标签
关键字:

blend tree