Unity Metaverse(二)、Mixamo & Animator 混合树与动画融合

简介: Blend Tree混合树的使用与动画融合的实现

🎈 Mixamo

🔸 简介

MixamoAdobe公司推出的在线免费 角色动画库,地址: https://www.mixamo.com/#/,我们可以在上面搜索开发所需的角色动画并下载使用。

在这里插入图片描述

🔸 使用说明

例如我们想为Avatar角色添加一个Idle动画,在Search搜索栏中进行检索:

在这里插入图片描述
可以通过UPLOAD CHARACTER上传我们自己的Avatar模型来预览动画效果:

在这里插入图片描述
点击DOWNLOAD便可以下载对应的角色动画,下载完成后导入到Unity中,在Import Settings导入设置Rig窗口中,将Animation Type即动画类型改为Humanoid人形动画:

在这里插入图片描述

🎈 Unity Animator

🔸 Blend Tree 混合树

Blend TreeAnimator Controller动画状态机中的一种特殊状态类型,用于多个动画之间的 平滑混合,每个动画对最终效果的影响由 混合参数控制,经常用于处理移动动画之间的混合。

例如我们在Mixamo动画库下载了IdleWalkSprint,即静止、行走、奔跑三个动画,接下来想要使用Blend Tree通过一个参数Speed即移动速度来控制这三个动画之间的混合。

首先将这三个动画的Loop Time都设置为true,表示它们都是循环播放的:

在这里插入图片描述
Animator中通过右键 > Create State > From New Blend Tree来创建一个混合树,命名为Move,并创建参数Speed:

在这里插入图片描述
双击进入混合树,添加三静止、行走、奔跑三个动画,由于我们使用一个参数Speed来控制混合,所以Blend Type使用默认的1D方式,Threshold阈值分别设置为0、10、25:

在这里插入图片描述
通过用户输入的值来设置Speed参数:

using UnityEngine;

namespace SK.Framework.Avatar
{
    /// <summary>
    /// Avatar动画控制
    /// </summary>
    public class AvatarAnimatorController : AvatarMovementController
    {
        //动画参数
        private static class AnimatorParameters
        {
            public readonly static int Speed = Animator.StringToHash("Speed");
        }

        private Animator animator;

        protected override void Start()
        {
            base.Start();
            animator = GetComponent<Animator>();
        }

        protected override void Update()
        {
            base.Update();
            animator.SetFloat(AnimatorParameters.Speed, Mathf.Clamp01(input.magnitude) * speed);
        }
    }
}

在这里插入图片描述

🔸 动画融合

动画融合是指两个动画之间的融合播放,例如第三人称射击游戏中玩家边走边射击的动作,可以理解为移动+射击动画的融合播放:

在这里插入图片描述
这里我们以行走+打招呼的动画融合为例,我们在Mixamo动画库中下载一个Wave动画,在Animator中创建一个新的Layer层级,将Weight权重设为1,Blending设为Override方式,并创建一个Avatar Mask

在这里插入图片描述
Avatar Mask禁用掉除了右手和右臂之外的其它部位,因为我们打招呼的动作只需要右手和右臂起作用:

在这里插入图片描述
添加一个Trigger类型的参数,用来触发Wave动作:

在这里插入图片描述
假设用户按下快捷键1时触发Wave动作:

using UnityEngine;

namespace SK.Framework.Avatar
{
    /// <summary>
    /// Avatar动画控制
    /// </summary>
    public class AvatarAnimatorController : AvatarMovementController
    {
        //动画参数
        private static class AnimatorParameters
        {
            public readonly static int Speed = Animator.StringToHash("Speed");
            public readonly static int Wave = Animator.StringToHash("Wave");
        }

        private Animator animator;

        protected override void Start()
        {
            base.Start();
            animator = GetComponent<Animator>();
        }

        protected override void Update()
        {
            base.Update();
            animator.SetFloat(AnimatorParameters.Speed, Mathf.Clamp01(input.magnitude) * speed);

            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                animator.SetTrigger(AnimatorParameters.Wave);
            }
        }
    }
}

在这里插入图片描述

目录
相关文章
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
143 6
|
2月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
114 3
|
3月前
|
开发者 图形学 C#
深度解密:Unity游戏开发中的动画艺术——Mecanim状态机如何让游戏角色栩栩如生:从基础设置到高级状态切换的全面指南,助你打造流畅自然的游戏动画体验
【8月更文挑战第31天】Unity动画系统是游戏开发的关键部分,尤其适用于复杂角色动画。本文通过具体案例讲解Mecanim动画状态机的使用方法及原理。我们创建一个游戏角色并设计行走、奔跑和攻击动画,详细介绍动画状态机设置及脚本控制。首先导入动画资源并添加Animator组件,然后创建Animator Controller并设置状态间的转换条件。通过编写C#脚本(如PlayerMovement)控制动画状态切换,实现基于玩家输入的动画过渡。此方法不仅适用于游戏角色,还可用于任何需动态动画响应的对象,增强游戏的真实感与互动性。
80 0
|
3月前
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
79 0
|
3月前
|
图形学
Unity动画☀️Unity动画系统Bug集合
Unity动画☀️Unity动画系统Bug集合
|
5月前
|
图形学
【unity小技巧】受伤屏幕闪红、死亡动画、死亡黑屏效果
【unity小技巧】受伤屏幕闪红、死亡动画、死亡黑屏效果
153 2
|
5月前
|
图形学
【推荐100个unity插件之9】分享几个完全免费的2D角色动画生成器(推荐收藏)
【推荐100个unity插件之9】分享几个完全免费的2D角色动画生成器(推荐收藏)
244 0
|
5月前
|
图形学
unity3d uv动画
unity3d uv动画
|
5月前
|
图形学
【unity小技巧】FPS简单的射击换挡瞄准动画控制
【unity小技巧】FPS简单的射击换挡瞄准动画控制
29 0
|
5月前
|
图形学
【unity小技巧】手戳代码程序化绘制地形Terrain树和预制体物品、动物
【unity小技巧】手戳代码程序化绘制地形Terrain树和预制体物品、动物
42 0