Unity(2022.3.41LTS) - 动画混合树

2024-09-05 10:20
文章标签 unity 动画 混合 2022.3 41lts

本文主要是介绍Unity(2022.3.41LTS) - 动画混合树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

零.简介

一、动画混合树的概念

二、动画混合树的类型

三、动画混合树的创建和编辑

1.创动画混合树建

2.编辑动画混合树

3.1D混合树

4.2D混合树

四、动画混合树的使用方法

1.关联动画混合树

2.控制混合参数

3.1D混合树使用

4.查看1D效果

5.2D混合树使用

6.2D混合树效果

五、动画混合树的优化和注意事项



零.简介

在 Unity 中,动画混合树(Animation Blending Tree)是一种强大的工具,用于创建自然流畅的动画过渡和混合效果。比如人物.从站立,到走路,到跑步.可以更简单更平缓的切换

一、动画混合树的概念

动画混合树是一种将多个动画片段组合在一起,根据特定的参数进行混合的技术。通过动画混合树,开发者可以实现从一个动画到另一个动画的平滑过渡,以及同时播放多个动画的混合效果。

例如,一个角色的行走动画可以根据角色的速度参数进行混合,当速度较慢时,播放正常的行走动画;当速度较快时,逐渐混合进入奔跑动画。这样可以使角色的动画更加自然流畅,避免了生硬的动画切换。

二、动画混合树的类型

  1. 1D 混合树

    • 1D 混合树是最简单的动画混合树类型,它使用一个单一的参数来控制动画的混合。这个参数可以是任何数值类型,如整数、浮点数或布尔值。
    • 例如,一个角色的行走动画混合树可以使用速度参数作为混合参数。当速度为 0 时,播放站立动画;当速度逐渐增加时,逐渐混合进入行走动画;当速度超过一定值时,混合进入奔跑动画。
  2. 2D 混合树

    • 2D 混合树使用两个参数来控制动画的混合。这两个参数可以是任何数值类型,如整数、浮点数或布尔值。
    • 例如,一个角色的行走动画混合树可以使用速度和方向两个参数作为混合参数。当速度为 0 时,播放站立动画;当速度逐渐增加时,根据方向参数逐渐混合进入不同方向的行走动画;当速度超过一定值时,混合进入奔跑动画。
  3. 直接混合树

    • 直接混合树是一种特殊类型的动画混合树,它不使用参数来控制动画的混合,而是直接将多个动画片段混合在一起。
    • 例如,一个角色的攻击动画混合树可以将不同类型的攻击动画直接混合在一起,根据随机数或其他逻辑选择播放不同的攻击动画。

三、动画混合树的创建和编辑

1.创动画混合树建

  • 在 Unity 中,可以通过以下步骤创建动画混合树:
    • 在项目窗口中,右键点击并选择 “Create> Animator Controller” 创建一个动画控制器。
    • 在动画控制器编辑器中,右键点击空白处并选择 “Create State> From New Blend Tree” 创建一个动画混合树状态。
    • 给动画混合树状态命名,并双击进入动画混合树编辑器。

2.编辑动画混合树

  • 在动画混合树编辑器中,可以进行以下操作:
    • 添加动画片段:将需要混合的动画片段拖放到动画混合树编辑器中。
    • 设置混合参数:根据动画混合树的类型,设置一个或两个混合参数。可以在动画控制器编辑器中定义这些参数,并在脚本中控制它们的值。
    • 调整混合权重:通过拖动动画片段的节点,可以调整每个动画片段在混合中的权重。权重越高,该动画片段在混合中的贡献越大。
    • 预览动画混合效果:在动画混合树编辑器中,可以点击 “Preview” 按钮预览动画混合效果。可以通过调整混合参数的值来观察动画的过渡和混合效果。
    • 要是返回上一页,点击这里

3.1D混合树

右键添加运动

创建三个 分别加入 等待,走路,跑步动画

拖动条件可以看到人物动画的变化

4.2D混合树

再来创建一个混合树

右键点击Entry状态,可以选择后面跟的初始状态

点击树,选择2D SimpleDirectional.

创建两个参数.在选择两个变量.

这是两个变量的位置,越靠近动作就会变成这个点的动作,

四、动画混合树的使用方法

1.关联动画混合树

将创建好的动画混合树状态关联到角色或物体的 Animator 组件上。在 Inspector 窗口中,选择角色或物体,然后将动画控制器拖放到 Animator 组件的 “Controller” 属性中。

2.控制混合参数

通过脚本或其他方式控制动画混合树的混合参数的值。可以在脚本中获取 Animator 组件,并使用 Animator.SetFloatAnimator.SetInteger 等方法来设置混合参数的值。

3.1D混合树使用

创建一个SpeedTree的参数,并设置到树的条件上.

        // 获取输入控制速度float horizontalInput = Input.GetAxis("Horizontal");float verticalInput = Input.GetAxis("Vertical");speed = Mathf.Clamp01(Mathf.Sqrt(horizontalInput * horizontalInput + verticalInput * verticalInput));// 设置动画参数animator.SetFloat("SpeedTree", speed);

4.查看1D效果

按下W,和松开的效果.会看到这三个动画切换起来很丝滑,至于这个gif有点卡是因为录制的时候fps调的低.

5.2D混合树使用

        if (Input.GetKeyDown(KeyCode.A)){// 设置动画参数animator.SetFloat("left", -0.948f);animator.SetFloat("right", 0f);}if (Input.GetKeyDown(KeyCode.D)){// 设置动画参数animator.SetFloat("left", 0f);animator.SetFloat("right", -0.694f);}

6.2D混合树效果

分别按下A和D实现左边跑 , 右边跑

五、动画混合树的优化和注意事项

  1. 优化动画资源

    • 动画混合树需要同时播放多个动画片段,因此会占用一定的内存和计算资源。为了提高性能,可以优化动画资源,减少动画片段的顶点数量和关键帧数量,以及使用动画压缩等技术。
  2. 避免过渡冲突

    • 在动画混合树中,不同的动画片段之间可能会存在过渡冲突。为了避免过渡冲突,可以合理设置混合参数的范围和过渡条件,以及使用动画状态机的过渡优先级等功能。
  3. 测试和调试

    • 在使用动画混合树时,需要进行充分的测试和调试,以确保动画的过渡和混合效果自然流畅。可以使用 Unity 的动画预览窗口和调试工具,以及在游戏中进行实际测试,来检查动画混合树的效果和性能。

动画混合树是 Unity 中一种非常强大的动画技术,可以实现自然流畅的动画过渡和混合效果。通过合理地创建和编辑动画混合树,以及控制混合参数的值,可以为游戏和动画项目带来更加生动和逼真的动画效果。

这篇关于Unity(2022.3.41LTS) - 动画混合树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138688

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

动画AnimationDrawable、转动

现实开发中:很多地方都用到 点击动画的特效; 本案例本人做了三个关于“动” 画 的效果; 先上图: 总体图: A: B: 1:点击图片按钮,效果是:图片闪动; 通过在xml中定义:标签:animation-list来实现点击动画的效果;  是否循环标签:oneshot ;   时间间隔标签:duration ; 要显示的图片标签:drawable ;

13 transition数组的动画使用

划重点 动画:transitiontransition-group :数组动画数组的 添加 / 删除 豆腐粉丝汤 清淡又健康 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><me

12 动画transition的使用2

划重点 Vue 动画:transition / transform在动画周期中执行动动画(上一篇是通过动画样式控制动画) 清蒸扇贝 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa