用户工具

站点工具


hero_animation

这是本文档旧的修订版!


英雄骨骼动画

目录规范(美术/程序)

动画相关文件存放在

Asset/Resources/Prefab/HeroAnim/

每个英雄命名一个文件夹, 比如 Hero_A_001, 最好和hero_config表格里的 Hero_L_001配对 (把L换成A)

文件夹中,存放4个文件(以及对应的meta文件),名字都和目录保持一致。分别是

Hero_A_001.png 切好部件的图片
Hero_A_001.prefab 程序引用的预制体
Hero_A_001.anim 待机动画文件
Hero_A_001.controller 待机动画控制文件

如图所示

表格引用(策划)

hero_config新增了一个anim字段,负责引用动画文件。

如果动画文件存在,则优先动画,否则使用pic字段的大图

会出现立绘的地方,都可以被替换成动画文件。

主要有:

* 战斗敌人界面
* 大卡界面
* 英雄升级界面

游戏引用(程序)

使用这样的代码 

UIFeatureHero.SafeSetHero(Img_HeroIcon,h_config);

代替原来的,UIFeatureCommon.SafeSetIcon(Img_HeroIcon,h_config.pic);

注意点

由于动画预制体是SpriteRenderer而不是Image 和原来会有若干不同参考后面两个章节

实现细节包含

* 1/清除原来的动画预制体
* 2/尝试加载预制体,如果失败则以普通图片形式加载
* 3/根据一套计算规则,使得预制体和原来的image一致,推算的公式是 100*(Image的尺寸)/(原始图片的尺寸)
* 4/根据一套计算规则,校准坐标中心,推算的公式是 0.5-Image.pivot.y * Image的高度
* 5/修改了 shader和UICMaterialCtrl 使得动画可以同时控制 动画预制体 和 图片Image的 颜色变化。其中用raw_color来控制颜色而不是直接用定点色,在动画中需要注意。参考下一节:动画注意
* 6/让SpriteRenderer的sortingLayer和sortingOrder和pic一致, 这样可以保证SpriteRenderer能正确显示。但会遮挡在同层的所有东西上面,所以需要把下面的UI控件提高层级。

动画注意

* 美术需要保证 预制体可以自动循环播放待机动画

* 在战斗场景中的缩放动画。只需要针对上层的pic节点制作就可以了,动画体是他的儿子,可以跟随动画

* 变色动画 分为 基础变色 和 Tint变色 。(前者是乘法,后者是叠加)

层级注意(所有人)

SpriteRenderer 和 Image 在实现上有所不同。

不能靠编辑器里的上下关系来确定显示层级。但是 sortingLayer(排序层)和sortingOrder(层内顺序)是有效的

所以我们可以让 英雄立绘/动画 下面的UI控件,都提高一个层级内顺序就可以解决这个问题。

如果下面的控件有交互,需要添加Raycast组件

技术备忘

https://blog.csdn.net/HuLuGuai/article/details/82797061

这篇文章讲了unity 老版的 切片动画和这个 animation2d新版动画的介绍。 新版会方便很多,也可以新老结合来做。

老版比较适合做刚体,也就是硬切块的动画

https://blogs.unity3d.com/2018/11/09/getting-started-with-unitys-2d-animation-package/

官网关于切块的做法视频

内部层级的做法,是设置骨骼的深度值,越大越靠前

hero_animation.1556432414.txt.gz · 最后更改: 2019/04/28 14:20 由 shenmo