super1 发表于 2021-12-11 13:29

Unity2019.3最新2D/骨骼/IK/动画/换装/全面指南!

本文转自Unity Connect博主 Michael Wang
全网唯一中文讲解全新2D实用工具,多图及代码分享,请妥善收藏!!!

Unity2019.3正式版终于来了,相信人多人都感叹《Lost crypt》演示项目中2D的新功能无比惊艳!这篇教程会来带大家制作2D人物有关的全套解决方案!包括换装!请看最终效果:



https://www.zhihu.com/video/1218142732704960512


如果这也是你一直期待找寻的教程,千万别忘记点赞和收藏这个文章!

这个系列一如既往的为大家提供视频教程详细讲解!教程中使用的素材也提供给大家:

https://m-studio.itch.io/2d-character-for-animation

素材由“火火”老师提供,再次表示感谢!

想制作这样的人物动画效果,我们需要一些基本的必须准备:


[*]Package Manager中下载:2D Animation、2D PSD importer、IK(preview)
[*]图片素材建议使用分开每部分的PSB文件。PNG也需要分开各部分导入后切割。
[*]Unity自然使用2019.3之后的正式版本。
[*]关注 Michael 的空间

系列视频简介:https://www.bilibili.com/video/av90884303/

一、骨骼创建、网格、权重

选中导入的图片后,在 Inspector 窗口里点击 Sprite Editor 。在打开的窗口右上角选择 Skinning Editor 进入主要操作的界面。




点击左侧 Create Bone 开始创建骨骼


骨骼创建好之后点击左侧的 Auto Geometry 后,在右下角的窗口选择你喜欢的参数后,点击 Generate For All Visible 自动生成网格和权重。




图片为调整各部分骨骼影响后的效果


这时我们可以使用左侧 Bone Influence 来调整各个部分所受影响的骨骼数量(配合Sprite sheet查看方式更好)





删除不需要影响的骨骼


到此骨骼和蒙皮权重就做好了,视频讲解部分可以查看:

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

二、Inverse Kinematic 反向动力学

反响动力学可以帮助我们自然的制作出真实的骨骼运动,特别是腿部运动以及各种锁链形式的运动,例如:辫子、锁链等等。创建方法是添加 IK Manager 2D(Script)。点击 + 号可以创建不同种类的IK。






Chain的两个均为锁链,可以添加任意数量的影响骨骼。Limb为模拟肢体,只影响3个骨骼(包括顶点)

接下来我们只需要在对应的骨骼创建空的GameObject,并放在骨骼的末端。拖拽放到 Effector 栏中,最后点击 Create Target 就会自动为我们创建好IK连接。




如果发现IK运动反向了,就勾选Flip来反转


更多说明及视频讲解请看:https://www.bilibili.com/video/av91909822/

三、录制动画技巧

对于Animation窗口的动画录制,大家应该都不陌生。点开红色录制按钮之后,所有的参数调整都将记录关键帧。为了能保证所有骨骼都能够记录关键帧,我们要选中所有的骨骼以及我们创建的IK控制。





按住 alt 键点击 Hierarchy 中物体的小尖头可以一次打开所有子集


选中所有骨骼,确定 Animation 的录制按钮已经启动后,右键点击 Position 和 Rotation 可以看到一个菜单,第一项就是 Add Key 可以添加关键帧。这样我们就确保了所有骨骼都记录了关键帧属性。

剩下的就是靠大家的创意发挥了,相信你一定能做出你想要的动作。不过要注意:某些动作会因为图层的渲染排序导致异常,如下图所示:





右侧手臂被身体遮挡住了


这时请记得:Animation 的录制功能,同样可以记录你的 Order in Layer 的变化。所以我们只需要在特定的姿势改变相关参数即可,IK的Flip反转亦是如此。





调整到 12 后可以达到我们想要的效果


相关的详细视频讲解请看:https://www.bilibili.com/video/av92995456/

四、实现装备切换,同一位置骨骼切换不同图片素材

首先:我们导入另外一套装备的图片素材,并将原来图片素材的骨骼复制粘贴到心的图片上。





Paste 粘贴时,我们可以选择勾选骨骼和网格


通常我们只选择粘贴骨骼,然后重新使用 Auto Geometry 来重新生成网格和权重,并设置每一个部分受影响骨骼与之前的图片完全一致!切记完全一致!

*注:头盔部分替代头发,所以需要受头发原来骨骼的影响,但是权重需要完全避免受到影响,如下图





这样头发细微动画不影响头盔


设置好了我们就可以开始做作换装了:在项目文件夹当中创建 Sprite Library 用来设置不同的 Category 保存各个部分的不同图片素材,如图





统一使用同样的 Label 方便在代码中调取,也可以使用不同的


制作好了 Library 之后,就可以在身体的每个部位添加 Sprite Resolver 脚本,并选择对应的 Category 。这样就可以通过点击切换不同的装备了。

但是实际情况我们不可能在游戏过程中使用鼠标点击,所以我们要了解如何使用代码来控制切换装备。

相关内容的详细API建议大家查看官方手册:https://docs.unity3d.com/Packages/com.unity.2d.animation@3.1/manual/index.html

实际操作例子:

我们需要使用 UnityEngine.Experimental.U2D.Animation 的命名空间,使用 SpriteResolver 来定义变量的类型,下面的代码实现获得全身所有添加的 SpriteResolver,并通过代码实现从 normal 切换到 armour 达到换装。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.U2D.Animation;

public class ArmourController : MonoBehaviour
{
    public List<SpriteResolver> spriteResolvers = new List<SpriteResolver>();
   
    public GameObject item;//身体上的背带物体
    SpriteResolver bodyResolver;//身体切换的部分
   
    void Start()
    {
      foreach (var resolver in FindObjectsOfType<SpriteResolver>())
      {
            spriteResolvers.Add(resolver);
            if (resolver.GetCategory() == "Body")
            {
                bodyResolver = resolver;
            }
      }
    }

    void Update()
    {
      if (Input.GetKeyDown(KeyCode.E))
      {
            foreach (var resolver in FindObjectsOfType<SpriteResolver>())
            {
                resolver.SetCategoryAndLabel(resolver.GetCategory(), "armour");
            }
            
            //实现在身体穿上装备的时候不显示背带部分
            if (bodyResolver.GetLabel() == "armour")
            {
                item.SetActive(false);
            }
            if (bodyResolver.GetLabel() == "normal")
            {
                item.SetActive(true);
            }
      }
    }
}


详细的视频讲解请看:https://www.bilibili.com/video/av93322672/

这就是所有2D Animation相关的功能讲解了,怎么样是不是一看就会呢?
欢迎戳下方原文链接,下载Unity官方技术社区app,在线技术答疑,发现更多资源干货!
原文链接:

pc8888888 发表于 2021-12-11 13:34

感觉spine要下岗了

ainatipen 发表于 2021-12-11 13:40

老哥,为什么2019.4版本的unity在package manager里面找不到ik

Ilingis 发表于 2021-12-11 13:43

...究极麻烦copy和paste的功能没法很方便的复制,复制完成后所有骨骼还会归到原点

rustum 发表于 2021-12-11 13:44

在添加脚本里可以找到ik
页: [1]
查看完整版本: Unity2019.3最新2D/骨骼/IK/动画/换装/全面指南!