精华内容
下载资源
问答
  • Unity 混合树(BlendTree 2D)的应用
    千次阅读
    2018-01-15 23:14:23

    最近在玩网易代理的《我守护的一切》,里面角色头部及其眼神会跟随镜头方向,与玩家交互性增强,就好像主角一直在注视着你。就用 Unity 简单的实现了一下。




    头部朝下的动作




    头部朝上的动作

    实现




    根据参数的值决定每个方向上的权重

    更多相关内容
  • Unity 2D 混合树小例子

    2021-08-17 22:12:07
    首先大致介绍下几种Unity混合树:Blend Tree,可以有多种模式: 1. 1D混合:只有一个参数,即横坐标。纵坐标是动作权重,横轴上每一个点,对应的各动作权重之和为100%。每个动作分支有自己的100%权重点,即只播放...

    首先大致介绍下几种Unity混合树:Blend Tree,可以有多种模式:

    1. 1D混合:只有一个参数,即横坐标。纵坐标是动作权重,横轴上每一个点,对应的各动作权重之和为100%。每个动作分支有自己的100%权重点,即只播放这一个动作。这个值左边是淡入、右边是淡出。Threshold的范围随便设,反正引擎最后都会归一化处理。

    1D混合适用于单轴状态过渡,如:idle==>walk==>run==>fast run的速度过渡。Runleft==>Run forward==>RunRight的转角过渡。

    2. 2D混合:2D混合又细分了 Simple Directional(方向单一)、Freeform Directional(方向自由)、Freeform Cartesian(笛卡尔自由)三种模式。这三种模式官方文档建议:第一种用于每个位移方向只有一个动作;第二种用于有多个位移方向的同时,有的方向会有多个动作;第三种的X、Y轴就不是表示两个位移方向了,你可以定义一个轴为旋转,一个轴为位移。

    3. Direct直接混合模式:混合树里套混合树,似乎适用于复杂的标签控制等。

    接下来我介绍下我试验的一个小例子,用一下2D混合模式。

    资源是Unity商店里的剑术动作包,里面有一套不同方向的走路动画,包括:向东、西、南、北,以及4个对角线方向,共8个方向的走路动画。这些动画有一个共同点:目光方向都是一个。如下图,看地面的Root Transform罗盘,走路方向是向左,大致为红箭头方向,但Body 的forward方向是蓝箭头方向。

    把这8个动作(勾选Apply Root Motion)放入混合树,加上idle,9个动作,形成了如下的圆形阵列。idle在中间,8个方向的走路放到对应方向的坐标位置。参数为BlendX和BlendY,用虚拟轴控制。红点表示当前参数坐标,有圈的点是参与动画融合的点,圈的大小表示权重。

     

     附上代码,通过IsWalk参数把状态转移到混合树里。这里还加了个“敌人”,最后的效果是玩家始终看向敌人的“决斗模式”:

    using UnityEngine;
    
    namespace BlendTreeTest
    {
        public class PlayerWalkTest : MonoBehaviour
        {
            private Animator playerWalk;
            public Transform enemy;
    
            void Awake()
            {
                playerWalk = GetComponent<Animator>();
            }
    
            void Update()
            {
                transform.LookAt(enemy);
                float x = Input.GetAxis("Horizontal");
                float y = Input.GetAxis("Vertical");
                if (x == 0 && y == 0)
                {
                    playerWalk.SetBool("IsWalk", false);
                }
                else
                {
                    playerWalk.SetBool("IsWalk", true);
                    playerWalk.SetFloat("BlendX", x);
                    playerWalk.SetFloat("BlendY", y);
                }
            }
        }
    }

    展开全文
  • 先看效果 游戏动画中的一项常见任务是在两个或更多相似运动之间进行混合。也许最熟知的示例就是根据角色的速度来混合行走和奔跑...双击混合树 (Blend Tree) 以进入混合树视图 (Blend Tree Graph)。 Animator ...

    先看效果

     

     

     游戏动画中的一项常见任务是在两个或更多相似运动之间进行混合。也许最熟知的示例就是根据角色的速度来混合行走和奔跑动画。另一个示例是角色在奔跑期间转向时向左或向右倾斜。

    使用方法:

    1.右键单击 Animator Controller 窗口上的空白区域。 1.从显示的上下文菜单中,选择 Create State > From New Blend Tree。 1.双击混合树 (Blend Tree) 以进入混合树视图 (Blend Tree Graph)。

    Animator 窗口现在显示整个混合树的图示,而 Inspector 显示当前选定节点及其直接子节点。

     类型

    1.  1D:一维的混合,一个参数控制动画的切换。

     

    2.  2D Simple Directional(2D简单方向):当你的运动代表不同的方向,如“向前走”,“向后走”,“向左走”,“向右走”,或“向上瞄准”,“向下瞄准”,“左瞄“和”右瞄“。当然了,可以在(0,0)处包含一个默认动作类似“空闲站立”或“直线瞄准”。与1D混合树不同的是,2D Simple Directional   不是在同一个方向上的多个动作,比如“走”和“跑”。

    3.  2D Freeform Directional(2D自由方向):动画运用有不同的方向时,也可以使用这种混合类型:可以在同一个方向上有多个运动,例如“走”和“跑”。在Freeform Directional类型中,(0,0)位置必须包含一个默认动作,如“空闲站立”。

    4.  2D Freeform Cartesian(2D自由笛卡儿):当混合的2个参数不代表不同的方向时使用。使用Freeform Cartesian,参数X和Y可以表示不同的概念类型,例如角速度和线速度。举个例子:“向前走不转向”,“向前跑不转向”,“向前走并右转”,“向前跑并右转”等动作。

    如果角色动画包含站立、走、跑和转向,非常符合2D Freeform Cartesian这种类型。我们的实例中就用的这个类型。

    实例

    实例中,我们用到了17个动画,包含,静止状态,前走后走左走右走4个,左前走左后走右前走右后走4个,同理跑也是8个动画。

     

     使用Walk和Turn控制动画的播放,其中Walk为PosX轴,Turn为PosY轴,在三维世界中,分别代表人物的前后移动和左右移动。我们手动输入参数,例如当(-0.5,0)的时候代表向后,(1,1)的时候代表想右前方跑。配置好混合树以后就可以用代码控制这些参数的变化从而播放相应的动画。

    代码

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityStandardAssets.CrossPlatformInput;
    
    public class RobotKyleController : MonoBehaviour
    {
        Animator m_Animator;
        private Vector3 m_Move;
    
    
        void Start()
        {
            m_Animator = GetComponent<Animator>();
        
        }
        private void FixedUpdate()
        {
            float h = CrossPlatformInputManager.GetAxis("Horizontal");
            float v = CrossPlatformInputManager.GetAxis("Vertical");
    
            if (Input.GetKey(KeyCode.LeftShift))
            {
                m_Move = v * Vector3.forward + h * Vector3.right;
            }
            else
            {
                m_Move =( v * Vector3.forward + h * Vector3.right)*0.5f;
            }
            UpdateAnimator(m_Move);
    
        }
        void UpdateAnimator(Vector3 move)
        {
            m_Animator.SetFloat("Walk", move.z, 0.1f, Time.deltaTime);
            m_Animator.SetFloat("Turn", move.x, 0.1f, Time.deltaTime);
           
        }
     
    }
    

    展开全文
  • Unity中的混合树

    千次阅读 2020-05-19 23:21:52
    一:前言 动画混合与动画过渡虽然都用于生成平滑的动画,但是却...——创建Bleed Tree,Unity的动画控制器面板中可以创建State类型或Blend Tree类型,Blend Tree可以理解为包含多个State类型,双击进入混合树视图 .

    一:前言

    动画混合与动画过渡虽然都用于生成平滑的动画,但是却是两个完全不同的概念。动画过渡被用于一段动画向另一段动画的平滑过渡,而动画混合则被用于通过插值技术实现对多个动画片段的混合


    二:使用场景

    ——根据角色的移动速度对走路和跑步动画进行混合
    ——对角色在走路或跑步时向左和向右转弯动画进行混合


    三:实现步骤

    ——创建Bleed Tree,Unity的动画控制器面板中可以创建State类型或Blend Tree类型,Blend Tree可以理解为包含多个State类型,双击进入混合树视图


    ——为当前混合树添加动作


    ——设置Blend Type
    1.1D:只通过唯一一个参数来控制子动画的混合。例如实现人物的向前,向右,向左的走路动作,只判断水平输入的值即可

    2.2D Simple Directional:通过两个参数来控制子动画的混合。这种模式适用于所有动画都具有一定的运动方向,其中任何两段动画的方向都不相同,例如向前走,向后走,向左走,向右走

    3.2D Freeform DIrectional:通过两个参数来控制子动画的混合。这种模式适用于所有动画具有一定的运动方向,但是同一方向上可以存在多段动画,例如向前走和向前跑可以同时存在

    4.2D Freeform Cartesian:通过两个参数来控制子动画的混合。这种模式适用于动画不具有确定的运动方向,例如向前走然后右转,向前跑然后左转,其中两个参数可以代码不同的含义,例如角速度和线速度

    展开全文
  • 主目录:...和其他的单个State里面存放1个Animation不同,混合树State里面可以存放多个甚至任意个动画。 举例: 这里的Run状态是一个Blend Tree,它里面有8个方向的动画, ...
  • Unity动画系统详解5:BlendTree混合树是什么?

    千次阅读 多人点赞 2020-06-14 18:20:53
    摘要:“Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树。” 洪流学堂,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来...
  • 做2D动画,我们都知道用混合树做四个朝向的移动,但是,一旦松开按键,角色就会回到idle的朝向,我想让他朝右边移动后停下,依然朝向右边静止。 我有八个动画,分别为runFront,runBack,runRight,runLeft,...
  • Unity Animator混合树

    千次阅读 2017-02-06 10:43:56
    1: 状态转换 :是在规定时间,...2. BlendTree 混合树: 一般混合两个相似的动作,它们可以通过控制权重来决定混合程度。 混合树创建步骤:1.右击出现creat state -> from blend Tree. 2.双击新建的混合树
  • Unity Mecanim动画系统 之 动画混合树(Blend Trees)的简单使用 目录 Unity Mecanim动画系统 之 动画混合树(Blend Trees)的简单使用 一、简单介绍 二、官网的 Blend Trees 的解释 1)Blend Trees 2)1D ...
  • 使用混合树可以很方便地通过变量控制多个动画的混合效果
  • Unity入门操作_混合树_033

    千次阅读 2017-09-01 17:39:39
    混合树出现可以解决曲线运动时动画的改变: 首先我们先导入资源 如图所示默认是Run动画,此时运行我们可以看到下图, 如图所示我们需要把Apply Root Motion取消勾选,现象如下图 双击Controller进入下图 ...
  • 一.BlendTree混合树的使用 1.放入一组动画,成为类似的动画片段,相当于一个动画合成器 2.BlendType 1D 一维模式 2D simple Directional Animator aniChan; // Use this for initialization void ...
  • 允许通过按不同程度组合不同动画的各个部分来平滑混合多个动画 可以方便的实现从一个动作过渡到另一个动作,会让动画播更加流畅 如一个人物 跑动、左转、右转等动画构建融合后让人物的移动更加的逼真 1D和2D...
  • 使用Unity混合树来实现角色的各种移动动作,包含详细步骤教程和相关代码
  • Unity3D_混合树控制人物奔跑

    千次阅读 2017-09-02 10:49:48
    有时候一个Legacy或者Mecanim动画不能很好的控制人物移动,这时候我们就可以通过混合树来控制了。 首先把我们的人物模型拖进场景 首先把默认状态选择,这里在我们看看人物能不能移动 然后我们进行操作;点击...
  • Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为1.动画混合树 混合树表示多个状态的混合调用,一般根据某些参数来实现这些动画状态之间的混合与切换,根据参数的个数可以分为1D混合、2D混合和直接...
  • 2D Simple Directional: Best used when your motions represent(表现) different directions, such as “walk forward”, “walk backward”, “walk left”, and “walk right”, or “aim up”, “aim down”, ...
  • 1、分别创建并添加角色左右转的动画 ...Blend Tree混合树 将不同动画混合,通过调节一个数值的大小,来控制混合动画更趋向于哪个单个动画 Animator窗口右键选择Create State—From New Blend Tree...
  • 一、AnimatorController 1D混合树: 新建混合树混合树控制: Parameter:控制当前混合树的参数; 三个蓝色三角形区域,代表的是三个动画的权重; Threshold:阈值(-1-0 运行的是向左走动画...
  • 一,介绍 在 动画混合树Blend Tree
  • 1.动画过渡 ...2.动画混合(混合树) 圣典文档: http://www.ceeger.com/Manual/AnimationBlendTrees.html 一维和二维: https://www.cnblogs.com/SHOR/p/5764014.html 实际应用案例: ...
  • 相机控制(Cameramanager) using UnityEngine; namespace dgl { public class CameraManager : MonoBehaviour { public bool lockon = false; public float followSpeed = 9;... public floa...
  • unity创建

    千次阅读 2017-11-03 17:53:25
    树木创建器结构 树木创建器 (Tree Creator) 的检视器 (Inspector) 被分成三个不同的窗格:层级视图 (Hierarchy)、编辑工具 (Editing Tools) 和属性 (Properties)。...层级视图中显示了的分解图,其中每个盒子为
  • 混合树   前面我们通过在Animation界面添加单独的动作来控制动画,这样做比较麻烦,每个单独的属性,比如站立,奔跑等,都需要单独的代码来控制。现在我们可以通过使用混合树,其基本思想是将相近的动画混合起来...
  • unity简单实现融合动画

    千次阅读 2018-12-15 14:30:36
    行为树:又称为混合树,一个流行的AI动画技术,涵盖了层次状态机,事件调度,事件计划,行为等一系列技术。在高度模块化状态,去掉状态中的跳转逻辑,使状态变成一个行为,称之为行为树。 在博客中我会用实例去展现...
  • 前言: 无论是RPG、ACT、AVG还是TPS游戏,都有大量的以第三人称为人物视角的游戏作品,尤其时TPS,就是以第三人称为特点而命名的。 而对于第三人称而言,人物...选择好模型后,就可以将模型导入到Unity中,然后我们需
  • 唯一的区别就是Montion指向的类型变成了Blend Tree类型,那么一个Blend Tree其实也就是一个状态,和状态不同的地方就是一个状态只能设定一个动画,而一个Blend Tree则可以设定为多个动画的混合。混...
  • 为了防止后期形成过于庞大混乱的动画网,可以使用混合树。 1D混合树即只有一个参数。 创建一个ground的混合树,存储站在地面上相关的动画。 添加混合树动画域,拖拽需要混合的动画。 灵活使用 视窗锁死 功能。 ...
  • 首先确定没有多次重复调用动画,其次没用trigger,这个好像会有问题。 最后就是我这次碰到的,由于用了Blend Tree,我在下面的每个方向的动画都加了一个事件,不知道为什么全部都执行了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,068
精华内容 827
关键字:

unity混合树