PS

1.PS画出每个骨骼图层的装备

我们找到第16节课制作的原图,用Ctrl+C/V复制到新的PS文件里面,通过各种工具在原有的多图层上来画装备,最后成果:

unity人物换装 unity中2d人物换装_unity人物换装

2.点击 文件---存储为...---大型文档格式   PSB

3.拖入到Unity的资源文件里

unity人物换装 unity中2d人物换装_动画_02

Unity

1.复制“石精灵”的骨骼到“石精灵-火”

unity人物换装 unity中2d人物换装_骨骼动画_03

unity人物换装 unity中2d人物换装_骨骼动画_04

 

注意:图片完全一致大小mesh网格才会粘贴,一般都是像下一步手动生成

2.自动赋权重以及取消不必要骨骼影响

详见上面第16节课

unity人物换装 unity中2d人物换装_动画_05

3. 为上一节课做的角色物体添加 系统脚本Sprite Libiary

unity人物换装 unity中2d人物换装_骨骼动画_06

 

 

unity人物换装 unity中2d人物换装_unity_07

 可以看到需要拖入一个人Sprite Library Asset 精灵图库

4.在文件夹里右键,新建Sprite Library Asset,为每一个部位创建一个集合,在每个集合内,拖动自己的原图和装备图片

unity人物换装 unity中2d人物换装_动画_08

 5.将Sprite Library Asset库拖动到角色的Sprite Libiary脚本中

unity人物换装 unity中2d人物换装_骨骼动画_09

 

6.为每一个图层物体(注意不是骨骼)添加系统脚本Sprite Resolver,选择自己创建的身体组

unity人物换装 unity中2d人物换装_骨骼绑定_10

 

7.现在更换标签或者点击图片就可以实现换装了!类似,不断扩展图片库资源就可以无限扩展装备。

unity人物换装 unity中2d人物换装_骨骼动画_11

unity人物换装 unity中2d人物换装_unity人物换装_12

 

 注意:如果部件大小相差较大,换装可能不会很好的融合,可以更改图片的锚点位置相同解决

unity人物换装 unity中2d人物换装_unity人物换装_13

 8.通过脚本来实现换装

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

public class ArmourController : MonoBehaviour
{
//获得所有的SpriteResolver脚本列表
    public List<SpriteResolver> spriteResolvers = new List<SpriteResolver>();
    
    void Start()
    {
//获得所有的SpriteResolver脚本
        foreach (var resolver in FindObjectsOfType<SpriteResolver>())
        {
            spriteResolvers.Add(resolver);

        }
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            foreach (var resolver in FindObjectsOfType<SpriteResolver>())
            {
                //在SpriteResolver脚本中设置组为当前组resolver.GetCategory(),标签为"fire"
                resolver.SetCategoryAndLabel(resolver.GetCategory(), "fire");
            }

        }
    }
}