本文转自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。
Chain的两个均为锁链,可以添加任意数量的影响骨骼。Limb为模拟肢体,只影响3个骨骼(包括顶点) 接下来我们只需要在对应的骨骼创建空的GameObject,并放在骨骼的末端。拖拽放到 Effector 栏中,最后点击 Create Target 就会自动为我们创建好IK连接。
更多说明及视频讲解请看:https://www.bilibili.com/video/av91909822/
三、录制动画技巧 对于Animation窗口的动画录制,大家应该都不陌生。点开红色录制按钮之后,所有的参数调整都将记录关键帧。为了能保证所有骨骼都能够记录关键帧,我们要选中所有的骨骼以及我们创建的IK控制。
选中所有骨骼,确定 Animation 的录制按钮已经启动后,右键点击 Position 和 Rotation 可以看到一个菜单,第一项就是 Add Key 可以添加关键帧。这样我们就确保了所有骨骼都记录了关键帧属性。 剩下的就是靠大家的创意发挥了,相信你一定能做出你想要的动作。不过要注意:某些动作会因为图层的渲染排序导致异常,如下图所示:
这时请记得:Animation 的录制功能,同样可以记录你的 Order in Layer 的变化。所以我们只需要在特定的姿势改变相关参数即可,IK的Flip反转亦是如此。
相关的详细视频讲解请看:https://www.bilibili.com/video/av92995456/ 四、实现装备切换,同一位置骨骼切换不同图片素材 首先:我们导入另外一套装备的图片素材,并将原来图片素材的骨骼复制粘贴到心的图片上。
通常我们只选择粘贴骨骼,然后重新使用 Auto Geometry 来重新生成网格和权重,并设置每一个部分受影响骨骼与之前的图片完全一致!切记完全一致! *注:头盔部分替代头发,所以需要受头发原来骨骼的影响,但是权重需要完全避免受到影响,如下图
设置好了我们就可以开始做作换装了:在项目文件夹当中创建 Sprite Library 用来设置不同的 Category 保存各个部分的不同图片素材,如图
制作好了 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