1. 项目概述:从静态切片到灵动角色的蜕变
在2D游戏开发领域,角色动画的制作一直是决定游戏表现力和开发效率的关键环节。过去,我们常常依赖于逐帧动画——美术同学绘制出角色每一个动作的每一帧,然后像翻书一样在引擎里播放。这种方式虽然直观,但弊端也很明显:资源量大、修改成本高、动作不流畅。而“Unity2D骨骼动画”这套技术栈,正是为了解决这些问题而生。它允许我们像操控木偶一样,通过一套虚拟的骨骼系统来驱动一张静态的、被切分好的角色图片,从而实现流畅、可复用、易于调整的动画效果。
这个项目的核心,就是打通从美术资源准备(PSB文件)到最终在Unity中实现复杂、自然的角色动画(包含反向动力学IK)的完整工作流。PSB,即Photoshop的大型文档格式,是许多2D美术同学最熟悉的创作环境,它能完美地保留图层结构。而IK(反向动力学),则是让角色动画从“能动”到“动得自然”的魔法。想象一下,你想让角色伸手去抓一个位置不确定的物体,如果手动去调每一节手臂骨骼的旋转,那将是一场噩梦。IK能让你直接指定手的目标位置,系统自动计算出肘部、肩部应该如何弯曲,极大地提升了动画制作的效率和真实感。
无论你是独立开发者、技术美术,还是对2D动画制作流程感兴趣的程序员,掌握这套从PSB到IK的完整流程,都意味着你能更高效地与美术协作,创造出更具表现力的游戏角色。接下来,我将以一个具体的角色(比如一个持剑的战士)为例,拆解每一个步骤,分享其中的技术细节、工具选择背后的考量,以及我踩过无数坑后总结出的实战经验。
2. 核心流程与工具链选型解析
一套高效、稳定的工具链是项目成功的基石。在Unity2D骨骼动画领域,市面上有多种方案,如Spine、DragonBones等第三方专业软件,也有Unity官方的2D Animation + PSB Importer工作流。我们这里选择的是后者,原因在于其与Unity引擎的无缝集成、对Photoshop原生文件格式的直接支持,以及完全免费的特性,特别适合中小团队和独立开发者。
2.1 为什么选择“PSB -> Unity 2D Animation”这条路径?
首先,降低美术协作门槛。美术同学无需学习新的骨骼绑定软件(如Spine),他们可以在最熟悉的Photoshop中完成角色设计、分层和初步的切片工作。PSB文件导入Unity后,图层结构能完美转换为精灵(Sprite),这保证了资源从创作到使用的无损传递。
其次,引擎原生支持,流程简洁。Unity的PSD Importer(实际也支持PSB)和2D Animation包是官方维护的。这意味着更少的兼容性问题,更直接的版本更新支持,以及更深入的引擎功能整合(如与2D物理、Tilemap的交互)。
再者,功能足够强大且免费。这套工具链提供了完整的骨骼创建、蒙皮权重绘制、动画剪辑制作功能,并且内置了强大的IK系统。对于大多数2D游戏项目来说,其功能已经绰绰有余,避免了额外的软件授权费用。
最后,利于项目资产管理。所有资源(PSB源文件、骨骼定义、动画剪辑)都直接存在于Unity项目内,版本管理清晰,资源依赖关系明确。
2.2 核心工具包详解与安装
整个流程依赖于Unity的两个核心Package(包):
- 2D PSD Importer: 负责将PSB文件及其图层结构导入为可供Unity使用的精灵资源。
- 2D Animation: 提供骨骼绑定、蒙皮、动画制作和IK功能的核心套件。
注意:从Unity 2022 LTS版本开始,
2D PSD Importer的功能已整合进2D Animation包中。如果你使用的是较新的版本,可能只需要安装2D Animation即可。但为了兼容性说明,我们仍会提及两者。
安装步骤:
- 打开Unity,进入
Window -> Package Manager。 - 在左上角的 Packages 下拉菜单中,选择
Unity Registry。 - 在搜索框中输入 “2D Animation”,找到后点击安装。Unity通常会提示你同时安装其依赖项,如
2D PSD Importer和2D Common等,一并确认安装。 - 安装完成后,你可以在菜单栏看到新增的
Window -> 2D -> Animation和Window -> 2D -> Sprite Editor等选项。
版本选择心得:对于生产项目,我强烈建议使用Unity的LTS(长期支持)版本,如2022.3 LTS或更新。LTS版本稳定性高,这两个官方2D工具包也经过了充分测试。避免使用最新的Tech Stream版本进行主力开发,以免遇到未修复的Bug。
3. 美术资源准备:PSB文件的科学分层与导出
这一步是后续所有工作的基础,如果PSB文件处理不当,会在骨骼绑定时带来巨大的麻烦。我们的目标不是画得好看,而是为“骨骼驱动”做好结构化准备。
3.1 图层结构设计原则
在Photoshop中绘制角色时,必须有强烈的“关节意识”。每一个可能独立运动的部位,都应该放在独立的图层上。以我们的持剑战士为例,一个科学的分层结构应该是这样的:
- 身体(Body)
- 头部(Head)
- 头发 (Hair_Front)
- 面部 (Face)
- 头发 (Hair_Back)(放在头部图层下方)
- 躯干(Torso)
- 左臂(Arm_L)
- 左上臂 (UpperArm_L)
- 左下臂 (LowerArm_L)
- 左手 (Hand_L)
- 右臂(Arm_R)
- 右上臂 (UpperArm_R)
- 右下臂 (LowerArm_R)
- 右手 (Hand_R)(握剑部分可能需要特殊处理)
- 左腿(Leg_L)
- 左大腿 (Thigh_L)
- 左小腿 (Calf_L)
- 左脚 (Foot_L)
- 右腿(Leg_R)
- 右大腿 (Thigh_R)
- 右小腿 (Calf_R)
- 右脚 (Foot_R)
- 头部(Head)
- 武器(Weapon)(通常作为独立的骨骼或子级处理)
- 附件(Accessories)(如披风、飘带等,可能需要用骨骼链或物理模拟)
关键技巧:
- 命名规范:使用清晰、一致的英文命名(如
UpperArm_L),避免中文和特殊字符。这能保证导入Unity后资源名的可读性,对后续的脚本控制也至关重要。 - 枢轴点预思考:在绘制每个部位时,心里要想着它围绕哪里旋转。例如,上臂围绕肩部旋转,下臂围绕肘部旋转。在PS中虽然无法直接设置,但可以通过将关节位置放在图层中心或特定位置来辅助后续绑定。
- 重叠与顺序:图层顺序决定了渲染的先后。例如,
Hair_Back应该在Head图层之下,Hand_R可能在Weapon图层之上或之下,取决于握持方式。这需要在PS中精心调整图层顺序。
3.2 PSB导出设置与常见坑点
完成绘制后,保存为.psb格式(注意是psb,不是psd,以支持更大尺寸和更多图层)。接下来是导入Unity前的关键检查。
- 颜色模式:确保文档颜色模式为
RGB颜色,8位/通道。Unity的2D系统对CMYK或其他高位深支持不佳。 - 背景图层:删除或隐藏纯色的背景图层。我们只需要角色本身。
- 智能对象与图层样式:尽量将智能对象栅格化,复杂的图层样式(如外发光、投影)可能在导入后效果不一致。最稳妥的方式是,将最终呈现效果栅格化到图层本身。
- 画布尺寸:画布尺寸就是角色在游戏中的最大可能尺寸。建议设置为2的幂次方(如1024x1024),虽然不是强制要求,但有利于纹理压缩和内存管理。
实操心得:我习惯在导出前,将整个角色图层组复制一份,合并为一个新的图层,放在最底层并隐藏。这个合并层可以作为“参考层”或“备份层”,万一在骨骼绑定过程中发现切片有误,可以快速对照,而无需重新打开PSB修改再导入。
4. Unity中的骨骼绑定与蒙皮权重复盘
将PSB文件拖入Unity的Assets文件夹后,Unity会自动使用PSD Importer进行导入。在Inspector窗口中,确保Texture Type为Sprite (2D and UI),并且Sprite Mode为Multiple(多精灵)。点击Sprite Editor按钮,进入精灵编辑器。
4.1 精灵切片与骨骼创建
在Sprite Editor中,系统通常已经根据PSB的图层自动生成了切片(每个图层一个切片)。你需要检查两件事:
- 切片边界:自动生成的切片边界可能过大(包含透明区域)。使用
Trim功能或手动调整矩形框,使边界紧贴精灵内容,这能优化渲染和碰撞体生成。 - 枢轴点(Pivot):这是至关重要的一步。每个切片的枢轴点决定了它围绕哪里旋转。你需要手动将每个身体部位的枢轴点设置到其关节位置。
- 例如:
UpperArm_L的枢轴点应设置在肩部位置。 - 例如:
LowerArm_L的枢轴点应设置在肘部位置。 - 例如:
Head的枢轴点应设置在脖子根部。
- 例如:
设置完成后,点击Apply。现在,在Project窗口中选中这个PSB文件,你会看到它下面展开了一堆独立的Sprite资源。
接下来,我们将这些精灵组装成角色并绑定骨骼。在Project窗口中右键点击PSB文件或其下的任一精灵,选择Create -> 2D -> Character。这会在场景中创建一个带有Sprite Skin组件的GameObject。将所有的精灵(除了武器、附件等可能需要独立处理的部分)拖拽到Sprite Skin组件的Sprites数组里。
然后,打开Window -> 2D -> Animation,选择场景中的角色GameObject,点击Create按钮为其创建一个Animator Controller和初始的Animation Clip。此时,Skinning Editor(蒙皮编辑器)模式会自动激活。
在Skinning Editor的Bone标签页下,开始创建骨骼:
- 从躯干中心开始,创建
根骨骼(如Root或Hip)。 - 从根骨骼延伸出脊柱骨骼(可简化为1-2节),再到颈部、头部。
- 从躯干上部创建肩部骨骼,再延伸出上臂、下臂、手部骨骼。
- 从根骨骼创建大腿、小腿、脚部骨骼。
创建骨骼的技巧:按住Shift键点击并拖动,可以从选中的骨骼末端创建子骨骼。骨骼的层级关系会直接在Hierarchy窗口中体现,确保父子关系正确(例如,Hand_L是LowerArm_L的子对象)。
4.2 蒙皮权重绘制的核心艺术
骨骼创建好后,切换到Skinning Editor的Weight标签页。这才是骨骼动画的灵魂所在——蒙皮权重。它定义了每一块精灵(网格顶点)受哪些骨骼的影响,以及影响的程度。
- 自动生成权重:首先可以尝试点击
Auto Generate Weights。系统会根据骨骼和精灵的几何位置,计算一个初始的权重分配。对于结构简单的角色,这可能已经足够好。 - 手动绘制权重:自动权重几乎永远不完美。你需要使用画笔工具手动调整。
- 选择骨骼:在左侧骨骼列表中选择一块骨骼(如
UpperArm_L)。 - 绘制权重:在右侧的精灵视图上绘制。红色区域代表受当前选中骨骼的完全影响(权重1),蓝色代表不受影响(权重0),中间是渐变。
- 关键区域:
- 关节处:这是权重绘制的难点。例如肘关节,
LowerArm_L和UpperArm_L的权重应该在此平滑过渡。如果过渡生硬,弯曲时会出现难看的褶皱或撕裂。 - 重叠区域:如胸部与上臂重叠的部分,需要仔细分配躯干和手臂骨骼的权重,避免在手臂抬起时,胸部肌肉被错误地拉扯。
- 关节处:这是权重绘制的难点。例如肘关节,
- 选择骨骼:在左侧骨骼列表中选择一块骨骼(如
权重绘制黄金法则:
- 一块区域通常受1-3根骨骼影响:例如前臂,主要受
LowerArm_L影响,其次UpperArm_L和Hand_L可能会有少量影响以保证平滑。 - 所有权重之和必须为1:一个顶点受所有骨骼影响的权重加起来必须等于1。编辑时注意观察。
- 使用平滑笔刷:在关节过渡区,多用
Smooth笔刷来柔化权重边界,避免出现明显的“硬边”。 - 多角度测试:在绘制过程中,频繁地在
Pose模式下拖动骨骼,实时观察蒙皮变形效果,这是发现权重问题最快的方式。
5. 动画制作与状态机搭建实战
绑定好骨骼后,我们就可以制作动画了。2D Animation窗口与Unity传统的Animation窗口类似,但它是专门为骨骼动画优化的。
5.1 创建基础动画剪辑
假设我们要制作一个“Idle”(待机)动画,让角色有轻微的呼吸起伏。
- 在
Animation窗口中,确保选中了之前创建的Idle剪辑。 - 将时间轴移动到第0帧,记录所有骨骼的初始位置、旋转(可能还有缩放)为关键帧。
- 将时间轴移动到第30帧(假设1秒30帧)。
- 在场景中,轻微地旋转
Root骨骼(上下移动模拟呼吸),或者轻微旋转脊柱、头部骨骼,制造一个放松的循环动作。 - 点击记录关键帧按钮(或按快捷键),在第30帧记录下新的姿态。
- 确保第60帧的姿态与第0帧完全相同,以形成无缝循环。你可以复制第0帧的关键帧粘贴到第60帧。
- 点击播放预览。一个简单的待机动画就完成了。
制作技巧:
- 利用动画曲线:不要只使用线性变化。在Curves视图里,将关键帧的切线模式改为平滑(Auto或Flat),可以让动作更加自然。例如,呼吸的上升和下降过程应该是缓入缓出的。
- 分层动画:对于像眨眼、嘴型等细微动作,可以单独制作在面部骨骼上,然后通过动画层进行叠加,避免修改复杂的全身动画。
- 参考视频:制作复杂动作(如攻击、跳跃)时,最好自己表演并用手机录制下来,或者寻找参考视频,一帧一帧地对照着K帧(设置关键帧),这是做出流畅、有力动画的最有效方法。
5.2 使用Animator Controller构建角色逻辑
一个角色不可能只有一个动画。我们需要Animator Controller来管理动画之间的切换逻辑。
- 在Project中创建
Animator Controller,双击打开Animator窗口。 - 你将看到默认的
Entry指向一个橙色状态的Any State。将我们制作好的Idle动画剪辑拖入窗口,它变成一个状态节点。右键该节点,Set as Layer Default State。 - 创建其他状态节点,如
Run、Attack、Jump。 - 创建
Parameters(参数)来控制状态切换,例如:Float类型:Speed(控制Idle到Run的切换)。Bool类型:IsAttacking、IsGrounded。Trigger类型:JumpTrigger(用于一次性触发跳跃)。
- 在状态之间创建
Transitions(过渡箭头)。选中过渡箭头,在Inspector中设置Conditions(条件)。例如,从Idle到Run的过渡,条件可以是Speed > 0.1。从Run到Idle的过渡,条件可以是Speed < 0.1。 - 调整过渡的
Settings:如Duration(过渡时间)设为0.1-0.2秒,让切换更平滑;取消勾选Has Exit Time,让切换完全由参数控制,更即时。
状态机设计心得:
- 保持简洁:不要一开始就设计过于复杂的状态机。从核心循环(Idle, Run, Jump)开始,逐步添加。
- 使用子状态机:对于一组相关的动画(如多种攻击动作
Attack1,Attack2,Attack3),可以将它们放入一个子状态机(Sub-State Machine)中管理,使主状态机更清晰。 - 动画融合:利用
Animator的CrossFade功能或在过渡中设置融合,可以避免动画切换的突兀感。
6. 反向动力学(IK)的深入应用与限制
IK是我们提升动画真实感和制作效率的利器。Unity 2D Animation包提供了强大的2D IK Solver(解算器)。
6.1 如何为角色添加IK
以让角色的手部始终指向鼠标位置为例(常用于射击游戏):
- 在角色的骨骼层级中,找到右手(
Hand_R)骨骼的末端。通常我们需要创建一个空的GameObject作为IK目标(Target)。将其命名为IK_Hand_Target,并拖拽为Hand_R的子对象,然后调整其局部位置到手掌前方(即你希望IK控制的目标点)。 - 在场景中选中角色根节点,在
Inspector中找到Sprite Skin组件。 - 在
Sprite Skin组件的底部,点击Create 2D IK Manager。这会为角色添加一个IK Manager 2D组件。 - 在
IK Manager 2D组件中,点击Create New Solver,选择Chain (CCD)或Chain (FABRIK)。两者都是常用的IK解算算法,CCD(循环坐标下降法)计算快,FABRIK(前向和后向到达IK)通常更自然。可以先选择CCD。 - 新建的IK解算器需要配置:
Target: 拖入我们刚才创建的IK_Hand_Target。Effector: 选择Hand_R骨骼(这是受IK影响的末端骨骼)。Chain Length: 设置为3。这表示IK链从末端效应器(手)开始,向上追溯3节骨骼:Hand_R->LowerArm_R->UpperArm_R。肩部骨骼通常不直接加入IK链,以保持身体稳定性。
- 现在,在运行时,你只需要通过脚本控制
IK_Hand_Target的位置(比如让它跟随鼠标),Hand_R、LowerArm_R、UpperArm_R这三节骨骼就会自动调整旋转,使手部始终指向目标。
IK设置技巧:
- 链长度:不是越长越好。只将需要灵活运动的骨骼加入链中。对于腿部,通常是从脚踝到髋关节;对于脊柱,可以从头部到髋部,但链越长,计算越复杂,也越可能产生不自然的扭曲。
- 权重(Weight):IK解算器有
Weight属性(0到1)。你可以通过动画曲线或脚本来控制它。例如,在角色正常奔跑时,IK权重为0(使用动画数据);当需要瞄准时,逐渐将权重过渡到1(启用IK)。这可以实现动画与IK的平滑混合。 - 约束(Constraints):IK管理器允许为骨骼添加旋转约束,例如限制肘关节只能在一定角度内弯曲,这能防止IK计算出人体不可能做到的姿势。
6.2 理解“IK什么时候不能求解”
这是IK使用中的一个核心难题。IK解算器并不是万能的,它在数学和物理上存在限制。
目标点不可达(最常见):当IK链在完全伸直的情况下,其末端所能到达的最远点构成了一个“可达工作空间”。如果IK目标点被设置在这个空间之外,解算器就无法找到一个让末端效应器精确到达目标点的骨骼姿势。
- 现象:手臂(或腿)会完全伸直并指向目标方向,但手(或脚)始终离目标点差一截距离。
- 应对策略:
- 钳制目标点:在脚本中,计算目标点到IK链根骨骼(如肩部)的距离。如果这个距离大于链长之和(各骨骼长度相加),则将目标点位置归一化到最大可达距离上。简单说,就是不要让目标点跑得太远。
- 视觉妥协:有时我们允许这种“够不着”的状态,因为它本身就是合理的(比如角色尽力伸手去够一个高处的物体但够不到)。这时可以配合角色的拉伸动画或表情动画来增强表现力。
奇异构型:当IK链完全伸直时,处于一个数学上的“奇异点”。在这个点上,微小的目标点移动可能导致骨骼角度的剧烈、不连续变化,看起来就是手臂突然“翻转”一下。
- 现象:当目标点穿过手臂的“伸直轴线”时,手臂可能会突然从一种弯曲方式切换到另一种。
- 应对策略:
- 避免让目标点长时间精确地停留在奇异点附近。
- 使用
FABRIK算法通常比CCD更能缓解这个问题。 - 为关节添加旋转约束,限制其活动范围,可以一定程度上避免链进入完全伸直的状态。
多解冲突:对于一个给定的目标点,IK可能存在多个解(即多组骨骼旋转都能让末端到达该点)。解算器通常会选择“最接近上一帧姿势”或“能量最小”的解,但这可能导致不预期的姿势切换。
- 现象:手臂可能在肘部向上弯和向下弯两种姿势之间跳变。
- 应对策略:
- 使用旋转约束强制肘关节只能向一个方向弯曲(例如,人的肘关节通常只能向后弯)。
- 在脚本中提供初始猜测,引导解算器朝你期望的方向求解。
实战建议:在复杂的动画中(如攀爬、复杂的抓取),不要完全依赖IK。最佳实践是“动画为主,IK为辅”。先制作一个基础的关键帧动画,然后在此基础上,对某些需要动态适应环境的部位(如手、脚、视线)叠加IK修正。通过控制IK的权重,你可以实现动画与动态响应的完美融合。
7. 性能优化与最佳实践
当角色数量增多或骨骼复杂度增加时,性能问题就会浮现。以下是一些关键的优化点:
骨骼数量与层级深度:
- 在满足表现需求的前提下,尽可能减少骨骼数量。每根骨骼都需要计算变换矩阵。
- 避免过深的骨骼层级。层级太深会增加矩阵计算的开销。通常,从根到末梢(如从髋部到脚趾)保持4-5级以内是比较理想的。
精灵网格密度:
- 在
Sprite Skin组件中,每个精灵都被三角剖分成网格。顶点数越多,蒙皮计算开销越大。 - 在
Sprite Editor的Custom Outline模式下,可以调整网格生成的Tessellation Detail(细分细节)。对于不涉及复杂变形的部位(如头盔、胸甲),可以将其调低,减少顶点数。
- 在
IK计算开销:
- IK是每帧都需要迭代计算的。限制活动IK链的数量和长度。
- 对于不需要每帧更新IK的角色(如远处的NPC),可以通过脚本动态启用/禁用其
IK Manager 2D组件。
动画压缩与烘焙:
- 在
Animation Clip的导入设置中,可以选择Rotation和Position的压缩格式。对于2D动画,通常使用Optimal即可。 - 在极致的性能要求下,可以考虑将复杂的骨骼动画烘焙成逐帧的精灵动画。但这会大幅增加资源体积,只适用于动画复杂但角色极少的特殊情况。
- 在
Draw Call合并:
- 确保角色所有部分的精灵都在同一张纹理图集(Texture Atlas)中。Unity的2D系统会自动为使用相同材质的精灵进行合批,减少Draw Call。
- 在
Player Settings中开启Sprite Atlas功能,并确保你的角色纹理被打包到图集中。
8. 常见问题排查与调试技巧
即使流程清晰,实操中仍会遇到各种问题。这里记录一些典型问题及其解决方法。
| 问题现象 | 可能原因 | 排查与解决步骤 |
|---|---|---|
| 导入后精灵错位或大小不对 | PSB画布尺寸或DPI设置问题;Unity中Sprite的Pixels Per Unit设置不匹配。 | 1. 检查PSB文档的图像大小(像素尺寸),而非画布大小。2. 在Unity中,选中PSB文件,在Inspector中调整Pixels Per Unit值,使其与项目标准一致(通常为100)。值越大,精灵在游戏中显示越小。 |
| 骨骼动画时精灵撕裂或变形诡异 | 蒙皮权重绘制错误,特别是关节处权重过渡不平滑;骨骼父子关系或层级错误。 | 1. 进入Skinning Editor的Weight模式,选中问题关节处的骨骼,检查权重分布。使用平滑笔刷仔细涂抹过渡区域。2. 在Pose模式下逐根移动骨骼,观察是哪个骨骼导致了异常变形。3. 检查Hierarchy中的骨骼父子关系是否正确。 |
| IK完全不起作用或效果奇怪 | IK链配置错误(目标、效应器、链长);IK解算器未启用或权重为0;骨骼约束冲突。 | 1. 确认IK Manager 2D组件已启用。2. 检查IK Solver的Target和Effector是否赋值正确。3. 检查Chain Length是否包含了正确的骨骼数量。4. 在运行时,通过脚本打印IK目标的位置,确认其是否在按预期移动。5. 检查是否有其他组件(如动画状态机)在覆盖骨骼的最终变换。 |
| 动画切换时角色“跳帧”或姿势复位 | 动画剪辑的初始姿势与角色的绑定姿势(Bind Pose)不一致;过渡设置中Exit Time未取消勾选。 | 1. 确保每个动画剪辑的第0帧,角色骨骼的姿势与在Skinning Editor中绑定的初始姿势(Bind Pose)完全一致。可以复制绑定姿势作为动画第一帧。2. 检查状态过渡条件,取消勾选Has Exit Time,让切换完全由参数控制。 |
| 角色在游戏中渲染顺序错乱 | 精灵的Sorting Layer和Order in Layer设置不正确。 | 1. 在Sprite Renderer组件上,为角色整体设置一个Sorting Layer(如“Characters”)。2. 对于角色内部的部件(如手在武器前/后),可能需要通过脚本动态调整其Order in Layer,或者更稳妥的方法是,在PSB分层时就规划好渲染顺序,并确保导入后各部分的Sprite Renderer顺序正确。 |
调试利器:
- 在Scene视图中可视化骨骼与IK:在
Gizmos菜单中,可以开启骨骼和IK目标的显示,方便在编辑和运行时观察。 - 使用Animation Event:在动画时间轴上添加事件,可以触发声音、粒子效果或脚本函数,是连接动画与游戏逻辑的桥梁。
- 记录与回放:对于难以复现的动画Bug,可以考虑编写脚本,在特定条件下记录一段时间内所有骨骼的变换数据,然后离线回放分析。
从一张分好层的PSB图片,到一个在场景中受IK影响、活灵活现的游戏角色,这个过程融合了美术的细心、技术的严谨和设计的巧思。我个人的体会是,前期在Photoshop中的分层规划和在Unity中的权重绘制,投入的时间越多,后期制作动画和调试的效率就越高,最终效果也越出色。这套流程虽然初看步骤不少,但一旦跑通,形成规范,它所带来的灵活性和效率提升是传统逐帧动画无法比拟的。最后一个小建议,为自己建立一套可复用的角色预制体模板和动画状态机模板,能让你在开启下一个2D角色项目时,真正地事半功倍。