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() == &#34;Body&#34;)
{
bodyResolver = resolver;
}
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.E))
{
foreach (var resolver in FindObjectsOfType<SpriteResolver>())
{
resolver.SetCategoryAndLabel(resolver.GetCategory(), &#34;armour&#34;);
}
//实现在身体穿上装备的时候不显示背带部分
if (bodyResolver.GetLabel() == &#34;armour&#34;)
{
item.SetActive(false);
}
if (bodyResolver.GetLabel() == &#34;normal&#34;)
{
item.SetActive(true);
}
}
}
}
详细的视频讲解请看:https://www.bilibili.com/video/av93322672/
这就是所有2D Animation相关的功能讲解了,怎么样是不是一看就会呢?
欢迎戳下方原文链接,下载Unity官方技术社区app,在线技术答疑,发现更多资源干货!
原文链接: 感觉spine要下岗了 老哥,为什么2019.4版本的unity在package manager里面找不到ik ...究极麻烦copy和paste的功能没法很方便的复制,复制完成后所有骨骼还会归到原点 在添加脚本里可以找到ik
页:
[1]