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

本文转自Unity Connect博主 Michael Wang

全网唯一中文讲解全新2D实用工具,多图及代码分享,请妥善收藏!!!

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

视频封面

如果这也是你一直期待找寻的教程,千万别忘记点赞和收藏这个文章! 这个系列一如既往的为大家提供视频教程详细讲解!

教程中使用的素材也提供给大家: 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 进入主要操作的界面。

开始创建骨骼

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

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

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

删除不需要影响的骨骼

到此骨骼和蒙皮权重就做好了,视频讲解部分可以查看: https://www.bilibili.com/video/av91157831/

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

image
image

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/[email protected]/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 spriteResolvers = new List();
  
  public GameObject item;//身体上的背带物体
  SpriteResolver bodyResolver;//身体切换的部分
  
  void Start()
  {
      foreach (var resolver in FindObjectsOfType())
      {
          spriteResolvers.Add(resolver);
          if (resolver.GetCategory() == "Body")
          {
              bodyResolver = resolver;
          }
      }
  }

  void Update()
  {
      if (Input.GetKeyDown(KeyCode.E))
      {
          foreach (var resolver in FindObjectsOfType())
          {
              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,在线技术答疑,发现更多资源干货!

原文链接:https://connect.unity.com/p/unity2019-3zui-xin-2d-gu-ge-ik-dong-hua-huan-zhuang-quan-mian-zhi-nan?app=true

你可能感兴趣的:(Unity2019.3最新2D/骨骼/IK/动画/换装/全面指南!)