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

【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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

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

http://www.xdnf.cn/news/358.html

相关文章:

  • 数据结构基本概念
  • 如何导出pip下载的paho-mqtt包
  • 1.了解开发行业
  • 解析:深度优先搜索、广度优先搜索和回溯搜索
  • OPC Client第3讲(wxwidgets):wxFormBuilder;基础框架;事件处理
  • JavaScript 所有操作数组的方法
  • Spring Bean 全方位指南:从作用域、生命周期到自动配置详解
  • pip 的包下载之后存放在哪?
  • 【AI提示词】退休规划顾问专家
  • SonarQube 集成教程
  • Python读取Excel表格数据并写成JSON格式文件(精简版)
  • 3.指令与权限
  • 4.6 实现重定向
  • Python基础知识语法归纳总结(数据类型-1)
  • 三格电子——CAN 转光纤(点对点)布线常见问题
  • Function Calling的时序图(含示例)
  • 2025年第十六届蓝桥杯Python程序设计赛道B组
  • 启动vite项目报Unexpected “\x88“ in JSON
  • Vue 开发实战:从入门到精通的经验之谈
  • Seed-Thinking-v1.5:推理模型新标杆诞生
  • 实用工具-screenrec介绍(截图工具)
  • 【AI图像创作变现】01文生图原理与提示词结构
  • 如何查看自己的主机地址
  • vue3中ref创建的变量使用`.value`(可以使用volar插件自动添加`.value)
  • 4月18日复盘
  • 1.Three.js 场景(Scene)详解
  • Ext系列⽂件系统
  • Attention 机制核心 - Transformer 的基石
  • CVE-2023-46604漏洞复现与深度分析
  • 他吞吞吐吐他吞吞吐吐