1. 从Photoshop开始拆解你的2D角色很多刚接触Unity2D骨骼动画的朋友第一步就卡在了素材准备上。网上找的素材要么是整张图要么格式不对导入Unity后根本没法用。我刚开始做的时候也踩过这个坑花了一下午时间研究最后发现问题的根源其实在第一步——Photoshop的拆解和导出上。今天我就把自己摸索出来的这套流程掰开揉碎了讲给你听保证你看完就能上手操作。首先你得理解为什么我们要在Photoshop里把角色“大卸八块”。想象一下你要做一个可以换衣服、换发型、换武器的游戏角色。如果角色是一张完整的图片你想换把剑就得把整张图重新画一遍这工作量简直不敢想。而骨骼动画的精髓就在于“组装”。我们把角色看成是由一个个独立的“零件”组成的比如头部、躯干、上臂、前臂、大腿、小腿等等。在Photoshop里我们的任务就是把这些“零件”一个个分离开每个零件单独放在一个图层里。这样做的好处是到了Unity里我们可以像玩拼装模型一样用骨骼去驱动每一个独立的部件从而实现流畅的动作。更重要的是未来你想给角色换装只需要替换对应的“零件”图片就行了比如把默认的布甲上衣图层换成一套炫酷的锁子甲图片角色的骨骼和动画完全不用动效率提升不是一点半点。具体操作上我建议你新建一个PSD文件画布大小根据你的游戏分辨率来定比如1024x1024。然后把你设计好的角色线稿或上色稿放进来。接下来就是细致的“外科手术”了。使用钢笔工具或者套索工具沿着部件的边缘仔细地抠图。关键点来了每个需要独立运动的部件都必须是一个独立的图层。比如左手和右手要分开上臂和前臂要分开甚至头发的前后发片也可以分开以便做出更飘逸的动画。图层命名也要规范我习惯用英文前缀加部件名比如Body_Torso,Arm_L_Upper,Arm_L_Lower,Leg_R_Thigh,Leg_R_Calf等等。清晰的命名会让你在Unity里绑定骨骼时事半功倍。所有部件都拆分完毕后就到了至关重要的导出环节。这里有一个新手百分之百会踩的“巨坑”千万不要直接保存为普通的PSD或者PNG你必须使用PSB (Photoshop Big)格式。这是因为普通的PSD格式在导入Unity时无法保留图层信息Unity会把它当成一张合并的图片处理那我们的拆分工作就白费了。而PSB格式是Adobe为了处理大型文件设计的它能完美地将所有图层结构信息一并保存。在Photoshop里点击“文件”-“存储为”在格式下拉菜单里选择“大型文档格式 (*.PSB)”然后保存即可。记住这个步骤这是通往后续所有步骤的钥匙。2. 导入Unity与精灵编辑器初探当你把那个宝贵的.PSB文件拖进Unity的Project窗口时真正的挑战才刚刚开始。Unity会弹出一个导入设置窗口这时候的选项选择直接决定了你后续工作的难易程度。我见过不少朋友在这里随便一点结果后面骨骼怎么都绑不上只能从头再来。首先看Texture Type这里必须选择Sprite (2D and UI)。然后下方会出现一个Sprite Mode的选项这里务必选择Multiple多图片模式。这个选项是告诉Unity“我这个文件里包了很多张小图也就是我们的各个部件请你把它们识别成多个独立的精灵Sprite。” 选完之后先别急着点Apply我们还要设置一下像素。在Pixels Per Unit这里我一般设置为100意思是Unity场景里的1个单位对应图片的100个像素。这个值可以根据你的游戏世界尺度调整保持一致就好目的是让角色的大小符合你的预期。点击Apply之后你会发现Project窗口里的PSB文件前面多了一个小三角点开它里面就是所有被你拆分好的部件精灵了每个部件都是一个独立的资源。但这还没完我们还需要为这个“精灵合集”创建骨骼动画所需的网格和骨骼信息。右键点击这个PSB文件选择Sprite Editor。这会打开一个全新的编辑界面这里就是我们制作2D骨骼动画的核心工作台。进入Sprite Editor后注意窗口顶部有一个下拉菜单默认可能是“Sprite”。我们需要把它切换到Skinning Editor蒙皮编辑器模式。这个模式是Unity专门为2D骨骼动画设计的提供了绘制骨骼、生成网格、刷权重等一系列工具。第一次进入时你会看到所有部件都堆叠在一起显示为一张完整的图片。别担心左侧的图层列表Outline里应该能看到所有部件的名字它们默认都是未绑定的状态。我们的目标就是为这些部件赋予“生命”——也就是骨骼。3. 绘制骨骼与建立层级关系进入Skinning Editor模式后左侧工具栏里最重要的就是那个Bone骨骼工具。点击它你就可以开始在精灵上绘制骨骼了。这个过程很像给人偶安装关节。我的经验是从身体的核心骨骼开始画起也就是骨盆或者腰部的位置。点击一下作为骨骼的起点拖动并再次点击来确定骨骼的方向和长度右键点击结束当前骨骼的绘制。第一条骨骼画好后它通常被命名为“Bone”。接下来是建立骨骼层级的关键。假设你已经画好了躯干骨骼现在要画连接在它上面的上臂骨骼。你必须先左键选中躯干骨骼它会高亮显示然后再去绘制上臂骨骼。这样绘制出来的上臂骨骼会自动成为躯干骨骼的“子级”。这个父子层级关系是骨骼动画的基石。子骨骼会跟随父骨骼移动。比如当躯干父旋转时上臂子会跟着一起转但上臂自己转动时却不会影响躯干。这完美模拟了人体的关节运动。根据你的角色复杂度逐步绘制出所有的骨骼链。一条典型的手臂骨骼链是躯干 - 上臂 - 前臂 - 手掌。一条典型的腿部骨骼链是躯干 - 大腿 - 小腿 - 脚。对于对称的部位比如左右手臂你可以画好一边后利用工具栏里的Mirror镜像功能快速复制出另一边的骨骼这能节省大量时间并保证对称性。绘制完所有骨骼后你可以在左侧的骨骼列表Bones中看到清晰的树状层级结构。这时候你可以尝试用移动工具拖动一下骨骼会发现只有骨骼本身在动图片部件并没有跟着动。这是因为我们还没有把图片“绑”到骨骼上。这个“绑定”的过程就是告诉Unity“这块肉图片部件归这几根骨头管。”4. 生成网格与绘制权重让皮肤动起来骨骼画好了接下来就要给这些“骨头”贴上“肉”并定义每块“肉”受哪几根“骨头”影响。这个步骤在3D里叫蒙皮在2D里原理相通。在Skinning Editor里我们通过生成网格和绘制权重来完成。首先选中一个图片部件比如上臂。在右侧的属性面板中找到Geometry部分。这里有一个Auto Geometry自动生成几何体按钮。点击它Unity会根据这个图片部件的轮廓自动生成一个多边形网格。你可以调整Outline Detail轮廓细节和Alpha ToleranceAlpha容差等参数来控制网格的精细度。细节太高会导致顶点过多影响性能太低则动画时容易变形失真。对于一般的手臂、腿部中等细节就足够了对于形状复杂的头发或披风可能需要更高的细节。我的建议是先使用默认参数生成如果动画时出现奇怪的变形再回来调高细节。网格生成后这个部件就从一张“纸片”变成了由许多三角形顶点组成的“软皮”。接下来就是最核心的一步权重绘制。选中工具栏里的Weight权重工具或者按快捷键G。当你把鼠标悬停在某个部件上时你会看到网格被不同的颜色覆盖。这颜色代表的就是权重——即该区域的顶点受哪根骨骼影响的强度。通常红色代表完全受当前选中骨骼的影响蓝色代表不受影响中间的颜色是渐变过渡。例如选中上臂骨骼然后在上臂部件上涂抹。你会发现上臂区域应该变成红色表示这部分网格完全跟随上臂骨骼运动。但是在关节处比如肘关节这里的网格属于前臂部件应该同时受上臂骨骼和前臂骨骼的影响。你需要选中前臂部件用权重刷仔细地刷肘关节区域让它的权重从上臂骨骼平滑地过渡到前臂骨骼。这个过渡区域刷得好不好直接决定了动画弯曲时是否自然。如果权重划分生硬肘部弯曲时就会像折断一样而不是平滑的褶皱。你可以通过右侧面板的Weight Slider调整画笔的强度、大小和衰减。对于精细部位比如手指关节可以把笔刷调小对于大面积的躯干可以用大笔刷快速涂抹。还有一个非常实用的视图模式是Weight Channel你可以选择只查看某一块骨骼的权重影响范围这样能更精确地调整重叠区域的权重分配。5. IK反向动力学让动画制作更符合直觉绑好权重后你的角色已经可以通过拖动骨骼来摆姿势了。但你会发现想摆一个简单的“脚踩在地面上”的姿势非常麻烦。你需要分别旋转大腿骨和小腿骨还要不断调整角度才能让脚掌刚好贴地。有没有更简单的方法有这就是IKInverse Kinematics反向动力学。正向动力学FK是我们之前手动调整骨骼的方式从父级骨骼开始一级级影响到子级末端。而IK是反着来的我直接控制末端的“ effector ”效应器让系统自动计算出上面所有父级骨骼应该旋转的角度。这太符合我们的直觉了我想让手放在某个位置直接把手拖过去就行系统会自动计算出手臂的弯曲角度。在Unity中为2D骨骼添加IK非常方便。首先在场景中选中你角色骨骼的根节点通常是骨盆位置的那个空物体。在Inspector面板点击Add Component搜索并添加IK Manager 2D组件。这个组件是IK系统的总管理器。然后我们需要为想要应用IK的骨骼链创建“效应器”。以腿部为例我们希望用脚踝来控制整条腿。在层级视图Hierarchy中找到脚踝处的骨骼比如叫Bone_Foot右键它选择Create Empty Child创建一个空子物体。把这个空物体重命名为Effector_Foot并把它拖动到脚踝骨骼末端的视觉位置也就是脚后跟或脚尖看你希望控制哪里。回到IK Manager 2D组件点击下方的号添加一个解算器。对于手臂和腿这类链状结构我们选择Limb肢体解算器。然后将刚刚创建的Effector_Foot空物体拖拽到解算器的Effector字段。接着点击Create Target按钮这会在场景中生成一个可移动的“目标点”通常是一个圆形手柄。现在奇迹发生了。你在场景视图中拖动这个新创建的“目标点”会发现整条腿大腿和小腿会自动地弯曲和伸展以保证脚踝的效应器始终跟随目标点。你可以随意移动目标点角色的腿会像真实生物一样做出反应。你还可以在解算器设置里调整Flip选项这可以改变关节弯曲的方向比如膝盖是向前弯还是向后弯。6. 结合动画机录制关键帧动画骨骼和IK都设置好后我们的角色已经从静态图片变成了一个可任意操控的“木偶”。现在我们要让这个木偶自己动起来这就需要用到Unity的Animator动画机和动画录制功能。首先在场景中选中你角色的根节点那个包含所有骨骼和精灵渲染器的父级空物体。在Inspector面板点击Add Component添加一个Animator组件。然后在Project窗口右键选择Create - Animator Controller创建一个动画控制器比如命名为Player_AC。把这个控制器拖拽到角色Animator组件的Controller字段。接下来我们要创建第一个动画比如待机动画Idle。在Project窗口右键选择Create - Animation命名为Idle.anim。创建好后Unity窗口下方会打开Animation动画面板。如果没打开可以通过Window - Animation - Animation打开。确保在Hierarchy中选中了你的角色然后在Animation面板顶部的下拉菜单里选择你刚刚创建的Idle.anim。现在点击Animation面板左上角的红色圆形录制按钮。整个场景会进入录制状态你对角色做的任何修改都会被记录为关键帧。首先在第0帧我们需要为所有会动的元素设置一个初始关键帧。这是一个非常重要的步骤可以避免很多奇怪的动画错误。在Hierarchy中选中角色的根节点然后按住Ctrl键Mac是Cmd键依次点击所有骨骼和IK目标点将它们全部选中。在Inspector面板中右键Transform组件下的Position和Rotation字段分别选择Add Key。这样所有物体在第0帧的当前位置和旋转就被记录下来了。将时间轴红线拖到第30帧假设我们做1秒30帧的动画。现在你可以开始摆姿势了。利用IK目标点轻松地将角色的脚稍微分开身体微微上下浮动手臂轻轻摆动。每摆好一个姿势记得要再次全选所有骨骼和IK目标点右键添加Position和Rotation的关键帧。动画的本质就是一系列连续的关键帧。你可以每隔10帧或15帧摆一个不同的姿势系统会自动在关键帧之间进行插值生成平滑的动画。录制完成后再次点击红色录制按钮结束。点击播放你就会看到你的角色在循环播放你刚刚制作的Idle动画了你可以用同样的方法创建Walk行走、Jump跳跃、Attack攻击等动画片段并在Animator Controller里用状态机把它们连接起来通过代码控制切换一个活灵活现的2D角色就真正诞生了。整个过程虽然步骤不少但每一步都有其明确的目的跟着这个流程走下来你就能彻底掌握从一张静态图到可动角色的完整魔法。