当前位置: 首页 > news >正文

【unity实战】Unity动画层级(Animation Layer)的Sync同步和Timing定时参数使用介绍,同步动画层制作角色的受伤状态

文章目录

  • 前言
  • 方案一:复制粘贴原有层级的状态机
    • 1、实现
    • 2、问题
  • 方法二:勾选Sync同步动画层
    • 1、简单实现同步
    • 2、同步blend tree的问题
    • 3、动画状态的播放时长
    • 4、下层状态覆盖了上层状态
  • 专栏推荐
  • 完结

前言

如何制作角色的受伤状态?
在这里插入图片描述

玩家角色在游戏过程中总是会受到各种各样的伤害,那么很多游戏就会用角色外观来直接表达玩家当前所受到的伤害程度,就是用一整套不同的受伤动画代替原有的动画。

如果对Animator的知识还不了解,可以先去查看:【unity游戏开发——Animator动画】

方案一:复制粘贴原有层级的状态机

在一个新的layer里复制一整套原有层级的状态机,就是一个非常好的解决方案。

1、实现

比如我们现在就新建一个层级取名叫injured,用来表现角色受伤后的所有动画状态,然后在原来的层级这里全选所有的状态,然后按control+c复制回到injury这一层,按control+v粘贴,如果默认初始状态有变化的话,我们就重新选择一下。这样我们就得到了一个和原来层级一模一样的动画层级。
在这里插入图片描述

2、问题

但是这样做有一个问题,那就是随着开发的进行,原本的层级可能会有变化。

那么此时就需要修改对应的injured layer中内容,如果变化过于频繁的话,则极有可能给开发者带来混乱。

方法二:勾选Sync同步动画层

unity为我们在这里提供了一个同步功能。

1、简单实现同步

我们只需要在injured这一层,勾选同步,然后配置需要和哪个层级同步就可以了。
在这里插入图片描述
那么在接下来的开发过程中,无论被指定的这一层级结构如何改变,injured layer都始终会与它保持一致。在这里插入图片描述
这就是Unity动画层级(Animation Layer)的SyncTiming介绍。

2、同步blend tree的问题

注意,层级的同步仅仅是同步动画状态和动画状态间的转换关系,并不会同步blend tree的内容。如果原动画层有blend tree的话,可以看到在injured layer这里的这个locomotion状态会是空的。
在这里插入图片描述
我们可以右键新建里面的blend tree。
在这里插入图片描述
然后双击进去,把我们下载好的受伤待机、受伤行走、和受伤奔跑动画片段放进去,重新配置一下参数即可。
在这里插入图片描述

3、动画状态的播放时长

问题:比如受伤行走动画比原来行走动画可能播放时间短,按理说受伤行走动画应该是无法完美同步覆盖行走动画的才对,那么unity是如何解决这个问题的呢?

在默认情况下,sync layer中的动画状态的时长会被缩放至它所需要同步的层级中对应动画状态的时长,也就是说同步的受伤行走动画会被拉长与行走动画时间一样。

如果我们想反过来同步动画播放时长要怎么做呢?

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

4、下层状态覆盖了上层状态

比如我们在受伤层的前面配置了新的一层Arms,主要是覆盖角色的手臂动画,实现举枪的效果。
在这里插入图片描述

那么会出现新的问题,会发现当我们的角色在受伤的状态下拿不起枪来了。

那是因为在动画层级中,位于下面的层级拥有更高的优先级。所以injured这一层拥有最高的播放优先级,它会代替其他的所有动画。如果权重为1,那么代替的程度就为百分百,代替的部位则是全身。

那么要解决,我们之前遇到的问题就很简单了,我们把它拖上来,放到第二这个位置上。
在这里插入图片描述
这样持枪动画的优先级就比上面两个要高了。


专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

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

相关文章:

  • MQTTClient.c中的协议解析与报文处理机制
  • C++每日训练 Day 17:构建响应式加载动画与异步数据处理
  • 最大子数组和(每日一题-中等)
  • JS反混淆网站
  • 数据结构中的宝藏秘籍之广义表
  • 3个实用的脚本
  • 使用Lombok @Builder 收参报错提示没有无参构造方法的原因与解决办法
  • Zookeeper介绍与安装配置
  • conversation_template | conversation_actors | conversation_line_template
  • Yarn的安装及环境配置
  • 专精特新政策推动,B端UI设计如何赋能中小企业创新发展?
  • GCD算法的学习
  • MySQL内置函数:字符串函数,数值函数,日期函数,流程控制函数
  • 基于VS Code 为核心平台的python语言智能体开发平台搭建
  • Oracle 19c部署之RMP一键安装初始化(五)
  • 微前端框架QianKun
  • 开源AI守护每一杯------奶茶咖啡店视频安全系统的未来之力
  • 20250418 一个正定矩阵的引理
  • 算法-链表
  • Docker Image export and load and tag
  • 2024年境内酒店住宿行业指标同比下滑:酒店行业传统增长模式面临挑战
  • 家政阿姨如何炼成全国劳模?做饭、收纳、养老、外语样样都会
  • 中国海警位中国黄岩岛领海及周边区域执法巡查
  • 新经济与法|如何治理网购刷单与控评?数据合规管理是关键
  • 伊朗港口爆炸已致46人死亡
  • 宜家上海徐汇商场明天恢复营业,改造后有啥新变化?