Mecanim高级主题:Mecanim Blend Tree应用、Blend Tree 选项、复合Blend Tree

本文详细介绍了Unity中BlendTree的概念及其应用,包括如何创建BlendTree,它的主要作用以及与状态转移的区别。此外,还深入探讨了BlendTree的选项设置,如1D、2D等混合类型,以及如何通过复合BlendTree实现更复杂的动画效果。

一、Blend Tree介绍及应用

一个游戏动画的基本任务就是将两个或多个相似的动作混合。也许最广为人知的例子就是依照任务行动的速度将行走和跑动动画混合起来了。另一个例子就是角色在跑动中向左或向右转身。

 

如何创建Blend Tree:

  在动画视窗中右键:Create State-From new Blend Tree
BlendTree主要作用:

  把几个类似的动画片段合成复合的动画片段,可以说相当于一个动画合成器。
典型的应用:

  想前跑、右跑、左跑类似的走动画片段,通过BlendTree可以把这三个动画片段合成为一个动画片段。

 

状态转移和混合树区别:

  相同点:两者都被用来制作平滑动画,但是他们是分别在不同的情况下使用的。

    不同点:

    1、状态转移是在确定的时间内从一个动画状态平滑的转移至另一个时使用的。状态转移被认定为动画状态机的一部分。如果一个动作跳转到另一个完全不同的动作耗时很短,那么状态转移通常的表现令人满意。

    2、动画混合树是通过使用不同的角度将角色不同的部分混合达到平滑混合不同的动画的目的的。他会用一个有动画控制器有关的、可量化的混合参数来控制各个动作相对于最终的效果的权重。为了使混合过后的动作起作用,必须混合造型和时间相近的动作。动画混合树在动画状态机中是一个特殊类型的状态。

 

二、Blend Tree选项

双击进入Blend Tree 属性编辑中显示相关选项

融合类型:1D、2D Simple Directional、2D Freeform Directional、2D Freeform Cartesian
1、1D选项 使用一个动画参数来控制Blend Tree中几个动画判断的融合。
 

三、复合Blend Tree

 

 

 

 

 

转载于:https://www.cnblogs.com/PEPE/p/3621779.html

### Unity BlendTree 中缺少 BlendType 选项解决方案 在 Unity 的 Animator Controller 中,Blend Tree 是一种用于混合多个动画状态的技术。当遇到 BlendTree 缺少 `BlendType` 选项的情况时,这通常是因为版本兼容性问题或是特定设置未被正确初始化。 为了修复这个问题,可以尝试以下方法: 1. **确认项目使用的 Unity 版本** 确保当前项目的 Unity 版本是最新的稳定版。旧版本可能存在一些已知 bug 或者功能缺失,更新到最新版本可能会解决问题[^1]。 2. **检查 Blend Tree 设置** 进入 Animator Controller 并选择对应的 Blend Tree 节点,查看 Inspector 面板中的属性配置。如果确实不存在 `BlendType` 字段,则可能是由于选择了错误类型的 Blend Tree。应创建一个新的 Direct Blending 类型的 Blend Tree 来替代默认的选择。 3. **手动添加字段** 对于某些自定义需求,可能需要通过脚本来扩展或修改现有的 Blend Tree 功能。可以通过继承 `AnimatorControllerPlayable` 和其他相关类来实现这一点。下面是一个简单的 C# 示例代码片段展示如何动态地向 Blend Tree 添加额外参数: ```csharp using UnityEngine; using UnityEditor; public class CustomBlendTreeEditor : EditorWindow { private void OnGUI() { if (GUILayout.Button("Add Blend Type")) { var blendTree = new AnimationBlendTree(); // 手动插入 BlendType 属性 SerializedObject so = new SerializedObject(blendTree); so.FindProperty("m_BlendParameter").stringValue = "Speed"; so.ApplyModifiedProperties(); Debug.Log("Added custom blend type to blend tree."); } } [MenuItem("Tools/Add BlendType")] public static void ShowWindow() { GetWindow<CustomBlendTreeEditor>("Custom BlendTree"); } } ``` 上述代码提供了一个编辑器窗口工具,允许开发者为选定的 Blend Tree 显式指定融合参数名称(如速度 Speed),从而间接实现了类似 `BlendType` 的效果。 4. **考虑官方文档和支持渠道** 查阅最新的 Unity 官方文档以及社区论坛,了解是否有针对此问题的具体说明或补丁发布。有时官方团队会在后续版本中加入新特性并修正早期存在的缺陷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值