【unity小技巧】使用Unity的Animation Layer和Avatar Mask把多个不同动画组合使用,实现人物不同部位播放不同的动画

news/2024/9/19 11:03:49/ 标签: unity, 游戏引擎, 游戏, 开发语言

文章目录

  • 前言
  • 如何使用Unity的Animation Layer和Avatar Mask把多个动画组合使用
  • 游戏角色的疲劳感是如何制作的?利用Animation Layers中的additive模式把多个动画混合在一起
  • 如何制作角色的受伤状态?Unity动画层级(Animation Layer)的Sync和Timing介绍
  • 新问题,那就是角色在受伤的状态下拿不起枪来了
  • 参考
  • 完结

前言

游戏制作中有一种需求非常常见,那就是把两个或者多个动画组合在一起,比如我需要玩家持枪行走,但是我手里只有玩家持枪战力的动画,以及空手行走的动画,那么我就必须把这两个动画组合到一起使用,针对这种动画缝合怪的需求,在Unity中最方便的解决方案,就是使用动画层级Animation Layer以及替身蒙版Avatar Mask

如何使用Unity的Animation Layer和Avatar Mask把多个动画组合使用

比如我需要玩家持枪行走,但是我手里只有玩家持枪站立的动画以及空手行走的动画
在这里插入图片描述
那么我就必须把这两个动画组合到一起使用
在y中最方便的解决方案就是使用动画层级animation layer以及替身蒙版avatar mask
在这里插入图片描述
如果我们当前使用了humanoid动画
那么我们就配置上面这里的humanoid
点击这些身体部位
绿色表示会播放动画
红色表示不会播放
点击周围可以一次性全选或一次性反选
我们要播放的是手部动画
所以选择这里的胳膊和手以及这两个IK
在这里插入图片描述
如果我们当前播放的不是humanoid动画,则可以展开下面的transforms来选择哪些骨骼节点受影响
哪些骨骼节点不受影响,我们可以在这里拖入这些骨骼所对应的avatar,然后点击这里获得它的骨骼结构
在这里插入图片描述
配置动画层级,为覆盖模式
在这里插入图片描述
新增持枪动画
在这里插入图片描述
可以看到当Rifle=true时,双手变成了持枪动画
在这里插入图片描述

游戏角色的疲劳感是如何制作的?利用Animation Layers中的additive模式把多个动画混合在一起

当我们要为当前的角色动画添加某种特色而又不希望取代现有动画时可以考虑使用additive模式
最常见的例子就是为角色添加“疲劳感“

那就让我们来着手为当前这个游戏角色增加一点疲劳感

新增疲劳层级,放置气喘吁吁的动画,通过控制这个权重值实现不同的疲劳程度
在这里插入图片描述
拖动一下weight,可以看到随着weight的增加,角色喘气的幅度越来越大了

在这里插入图片描述
那么我们再通过脚本为角色添加疲劳值的概念吧
站立不动的时候疲劳值会降低每秒降低“1”点,行走时疲劳值不变,奔跑时疲劳值增加
在这里插入图片描述

在这里插入图片描述
随着我们的奔跑,疲劳值在提升,喘气的幅度也在提升
停下来之后可以看到喘气的幅度由大变小直到消失
在这里插入图片描述

如何制作角色的受伤状态?Unity动画层级(Animation Layer)的Sync和Timing介绍

玩家角色在游戏过程中总是会受到各种各样的伤害
那么很多游戏就会用角色外观来直接表达玩家当前所受到的伤害程度,就是用一整套不同的受伤动画代替原有的动画
那么在一个新的layer里复制一整套原有层级的状态机,就是一个非常好的解决方案
比如我们现在就新建一个层级取名叫injured,用来表现角色受伤后的所有动画状态,然后在原来的层级这里全选所有的状态,然后按control c复制回到injury这一层
按control v粘贴,如果默认初始状态有变化的话,我们就重新选择一下
这样我们就得到了一个和原来层级一模一样的动画层级
在这里插入图片描述
但是这样做有一个问题,那就是随着开发的进行,原本的层级可能会有变化
那么此时就需要修改对应的injured layer中内容,如果变化过于频繁的话,则极有可能给开发者带来混乱
所以unity为我们在这里提供了一个同步功能,我们只需要在这里选择injured这一层,需要和哪个层级同步就可以了
那么在接下来的开发过程中,无论被指定的这一层级结构如何改变,injured layer都始终会与它保持一致
在这里插入图片描述
那么现在就让我们正式的新建一个层级来表现角色受伤情况下的移动情况
我们需要替换全身的动画,所以不需要avatar mask,blending模式我们选择override,IK pass我们勾选上
把weight调整到零
在这里插入图片描述
但是层级的同步仅仅是同步动画状态和动画状态间的转换关系,并不会同步blend tree的内容
所以在injured layer这里的这个locomotion状态是空的
我们需要新建里面的blend tree我们把之前在mixamo上下载好的受伤待机、受伤行走、和受伤奔跑动画片段放进去
根据他们自身的位移情况计算一下阈值
在这里插入图片描述
我们可以看出受伤后移动的速度确实会比没受伤的动画要慢很多
那么我们就假设当前这个游戏里角色受伤后移动速度会变成原来的百分之六十
我们之前设计的行走速度是1.5
那么这里就应该是1.50.6/0.966
在这里插入图片描述
我们在这里把阈值改成1.5
0.6

在这里插入图片描述

跑步也是
那么这里就应该是3.50.6/1.577374
我们把阈值改成3.5
0.6=2.1
在这里插入图片描述
效果
在这里插入图片描述
问题,比如受伤行走动画比原来行走动画可能播放时间短,按理说受伤行走动画应该是无法完美同步覆盖行走动画的才对,那么unity是如何解决这个问题的呢?

在默认情况下,sync layer中的动画状态的时长会被缩放至它所需要同步的层级中对应动画状态的时长

也就是说这里的受伤行走动画会被拉长与行走动画时间一样
在这里插入图片描述
如果我想反过来同步动画播放时长要怎么做呢?

一旦勾选了timing动画状态的播放时长就由他和被他同步的层级共同决定了
在这里插入图片描述
那么到底哪个层级的决定权更大一些呢
看这里的权重,当权重为一时,全都听当前这一层的,当权重为零时,全都听被同步的这一层的

新问题,那就是角色在受伤的状态下拿不起枪来了

在这里插入图片描述
在动画层级中位于下面的层级拥有更高的优先级,injured这一层拥有最高的播放优先级,它会代替的其他的所有动画
如果权重为一,那么代替的程度就为百分百,代替的部位呢则是全身
那么要解决我们之前遇到的问题就很简单了
我们把它拖上来,放到第二这个位置上
在这里插入图片描述
这样持枪动画的优先级就比上面两个要高了
在这里插入图片描述

参考

https://www.bilibili.com/video/BV1gT4y1k7EZ

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述


http://www.ppmy.cn/news/1522946.html

相关文章

ChatGPT 3.5/4.0使用手册:解锁人工智能的无限潜能

1. 引言 在人工智能的浪潮中,ChatGPT以其卓越的语言理解和生成能力,成为了一个革命性的工具。它不仅仅是一个聊天机器人,更是一个能够协助我们日常工作、学习和创造的智能伙伴。随着ChatGPT 3.5和4.0版本的推出,其功能和应用范围…

Ftrans无缝替代FTP方案:保障数据传输的安全性与合规性

FTP(文件传输协议)是一种用于在网络上进行文件传输的标准网络协议,历史悠久并且被广泛使用。但随着业务规模和文件体量的快速增长,在应用实践中,FTP存在一些安全和效率问题。因此政府单位需要可以平滑替代FTP的文件传输…

【H2O2|全栈】关于HTML(2)HTML基础(一)

HTML相关知识 目录 前言 准备工作 标签的具体分类(一) 本文中的标签在什么位置使用? 属性 标题标签 段落标签 文本格式化标签 分类汇总 计算机输出标签 ​编辑分类汇总 引文,引用标签 分类汇总 预告和回顾 UI设计…

消息中间件都有哪些

RabbitMQ:这可是一个开源的消息代理软件,也叫消息中间件。它支持多种消息传递协议,可以轻松地在分布式系统中进行可靠的消息传递。 Kafka:Apache Kafka是一个分布式流处理平台,它主要用于处理实时数据流。Kafka的设计初…

C#学习 深入理解委托、匿名方法、Lamda表达式、Linq;

目录 一.委托 1.1 什么是委托 1.2 委托的使用 二.匿名方法和Lamda表达式 2.1 什么是匿名方法 2.2 Lambda表达式 三.Linq 3.1 Linq理解 3.2 Linq的扩展方法 一.委托 1.1 什么是委托 委托和类一样,是具有特定参数列表和返回值类型的方法函数的…

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述…

【2.2 简单的逻辑电路,包括与门、与非门、或门】

2.2 简单的逻辑电路,包括与门、与非门、或门 在深度学习中,直接实现传统逻辑电路(如与门、与非门、或门)并不是最常见的应用,因为深度学习模型(如神经网络)通常用于处理更复杂、更抽象的数据表示…

Nginx跨域运行案例:云台控制http请求,通过 http server 代理转发功能,实现跨域运行。(基于大华摄像头WEB无插件开发包)

文章目录 引言I 跨域运行案例开发资源测试/生产环境,Nginx代理转发,实现跨域运行本机开发运行II nginx的location指令Nginx配置中, 获取自定义请求header头Nginx 配置中,获取URL参数引言 背景:全景监控 需求:感知站点由于云台相关操作为 http 请求,http 请求受浏览器…

MonoHuman: Animatable Human Neural Field from Monocular Video 精读

一、共享双向变形模块 1. 模块的核心思想 共享双向变形模块的核心目标是解决从单目视频中生成不同姿态下的3D人体形状问题。因为视频中的人物可能处于各种动态姿态下,模型需要能够将这些不同姿态的几何形状进行变形处理,以适应标准的姿态表示并生成新的…

Anthropic发布Claude企业计划 对标OpenAI的ChatGPT Enterprise

领先的人工智能初创公司 Anthropic 今天宣布推出Claude企业计划,以扩大Claude在企业中的应用。OpenAI 早在 2023 年就推出了名为ChatGPT Enterprise 的类似产品,并取得了相当大的成功。事实上,OpenAI 声称,财富 500 强中已有 92% …

python网络爬虫(五)——爬取天气预报

1.注册高德天气key 点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://re…

在模板中使用 Django 会话

在 Django 中使用会话(session)可以让你在用户访问网站的过程中存储和访问临时数据。我们可以利用会话在速度计算器的例子中存储和显示上次计算的结果。 1、问题背景 在 Django 中,可以使用会话来存储用户数据。在某些情况下,我们…

如何使用PTK一键安装opengaussdb 5.0

1、关于PTK工具 MogDB数据库是云和恩墨基于openGauss开源数据库打造,安稳易用的企业级关系型数据库。 PTK是云和恩墨出品的一款工具,帮助用户更便捷地部署管理MogDB数据库。 1.1 使用场景 开发人员快速启动多个本地 MogDB 环境用户通过 PTK 快速安装…

QString如何格式化字符串

在Qt中,QString类提供了多种方式来格式化字符串。这包括使用arg()方法、sprintf()风格的格式化(通过QString::asprintf()或QString::number()等辅助函数),以及从Qt 5.10开始引入的C11风格的格式化(虽然Qt核心库本身并不…

软件测试之压力测试知识总结

软件测试之压力测试知识总结 引言 随着信息技术的飞速发展,软件系统在各个行业中的应用越来越广泛,其稳定性和可靠性成为用户关注的焦点。压力测试作为软件测试中的一种重要方法,对于确保软件在高负载环境下的稳定性和可靠性具有重要意义。…

专业文字处理与协作软件Adobe InCopy(IC)2024WIN/MAC下载及安装教程

目录 简介: 一、Adobe InCopy软件概述 软件基本信息 主要特点 最新版本 二、下载与安装 下载 安装 Windows系统安装 Mac系统安装 三、系统要求 Windows系统要求 Mac系统要求 四、使用教程 基本操作 高级功能 协作与共享 简介: Adobe I…

“Jmeter-InfluxDB-Grafana“常见错误有哪些如何解决?

常见错误: 1.网络不同,检查网络IP是否写对,端口号有没有放开(Centos7端口号命令),防火墙是否关闭 firewall-cmd --add-port3000/tcp --permanent firewall-cmd --add-port3000/udp --permanent firewall-…

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3) 前言相关介绍1,登录界面:2,主界面:3,部分功能演示如下(1)识别网络图片(2)GoogleNet分类&#xf…

【微信小程序入门】4、微信小程序的项目成员和发布上线详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

高清无损!探索PDF转JPG的最佳实践工具

在信息爆炸的今天,PDF文件因其跨平台兼容性和文档保护特性,成为了工作、学习和日常生活中不可或缺的一部分。但是很多时候我们并不需要精度那么高的文件,图片分享更符合快捷的要求。这次我们就一起探讨有什么PDF转jpg的工具吧。 1.福昕PDF转…