当前位置: 首页 > news >正文

Unity_2D动画

2D动画

1. 序列帧动画(Sprite Animation)

1.1 基本概念

  • 定义:通过快速播放一系列静态图片来创建动画效果
  • 原理:利用人眼视觉暂留现象,连续播放多帧图片产生运动错觉
  • 特点:制作简单、兼容性好、适合简单动画效果

1.2 核心组件

  • Sprite Renderer:负责渲染精灵图片
  • Animator:控制动画状态机和播放
  • Animation Clip:存储序列帧动画数据
  • Sprite Library:管理精灵资源库

1.3 创建流程

  1. 准备素材:制作或收集序列帧图片
  2. 导入设置:设置Texture Type为Sprite (2D and UI)
  3. 创建动画:选中多帧图片,右键Create → 2D Object → Sprites → Animation
  4. 配置参数:设置帧率、循环模式等
  5. 应用动画:将动画片段添加到Animator Controller

1.4 关键参数设置

  • Samples:动画帧率,决定播放速度
  • Loop Time:是否循环播放
  • Loop Pose:是否循环姿势
  • Cycle Offset:循环偏移量
  • Root Transform Position (Y):根变换位置Y轴
  • Root Transform Rotation:根变换旋转
  • Root Transform Scale:根变换缩放

1.5 代码控制示例

using UnityEngine;public class SpriteAnimationController : MonoBehaviour
{private Animator animator;void Start(){animator = GetComponent<Animator>();}// 播放指定动画public void PlayAnimation(string animationName){animator.Play(animationName);}// 设置动画速度public void SetAnimationSpeed(float speed){animator.speed = speed;}// 检查动画是否播放完成public bool IsAnimationFinished(string animationName){return animator.GetCurrentAnimatorStateInfo(0).IsName(animationName) &&animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f;}
}

1.6 优化技巧

  • 图集合并:将多个序列帧合并到一张纹理中
  • 帧率控制:根据设备性能调整动画帧率
  • 内存管理:及时释放不使用的动画资源
  • LOD系统:根据距离使用不同精度的动画

1.7 常见应用场景

  • 角色移动:走路、跑步、跳跃等基础动作
  • UI动画:按钮点击、界面切换效果
  • 特效动画:爆炸、粒子效果等
  • 环境动画:水流、火焰、云朵等

1.8 Unity使用流程

┌─────────────────────────────────────────────────────────────┐
│                    序列帧动画创建流程                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │  准备素材   │───▶│  导入设置   │───▶│  创建动画   │     │
│  │ 序列帧图片  │    │Sprite类型   │    │Animation    │     │
│  └─────────────┘    └─────────────┘    └─────────────┘     │
│                                                             │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │  配置参数   │◀───│  应用动画   │◀───│  预览效果   │     │
│  │ 帧率循环等  │    │Animator     │    │ 实时播放   │     │
│  └─────────────┘    └─────────────┘    └─────────────┘     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1.9 详细操作步骤

步骤1: 素材准备
├─ 收集或制作序列帧图片
├─ 确保图片尺寸一致
└─ 命名规范(如:walk_001, walk_002...)步骤2: Unity导入
├─ 将图片拖入Project窗口
├─ 选中所有图片
├─ 设置Texture Type为Sprite (2D and UI)
└─ 设置Pixels Per Unit步骤3: 创建动画
├─ 选中多帧图片
├─ 右键 → Create → 2D Object → Sprites → Animation
├─ 命名动画文件
└─ 设置动画参数步骤4: 应用动画
├─ 创建GameObject
├─ 添加Sprite Renderer组件
├─ 添加Animator组件
├─ 将动画片段拖入Animator Controller
└─ 设置默认动画状态

2. 骨骼动画(Skeletal Animation)

2.1 基本概念

  • 定义:通过骨骼系统控制2D精灵的变形和运动
  • 原理:使用骨骼链和蒙皮技术,实现自然的关节运动
  • 特点:动画流畅、内存占用小、适合复杂角色动画

2.2 核心组件

  • Bone:骨骼节点,控制变形点
  • Skin:蒙皮网格,定义变形区域
  • Weight:权重值,控制骨骼对顶点的影响程度
  • IK(反向运动学):自动计算关节角度

2.3 工作流程

  1. 骨骼绑定:在2D精灵上创建骨骼结构
  2. 权重绘制:设置每个顶点受骨骼影响的程度
  3. 关键帧设置:在时间轴上设置骨骼位置和旋转
  4. 动画预览:实时查看动画效果
  5. 导出应用:将动画应用到游戏对象

2.4 技术优势

  • 内存效率:相比序列帧动画占用更少内存
  • 动画质量:可以实现更自然的关节运动
  • 可重用性:同一骨骼结构可以应用不同动画
  • 实时控制:可以动态调整动画参数

2.5 适用场景

  • 角色动画:复杂的角色动作和表情
  • 机械动画:机械臂、车辆等机械结构
  • 生物动画:动物、怪物等有机体
  • 特效动画:复杂的变形和扭曲效果

2.6 开发工具

  • Unity 2D Animation Package:官方2D动画工具包
  • Spine:专业的2D骨骼动画软件
  • DragonBones:开源的2D动画解决方案
  • Live2D:专注于角色表情和口型同步

2.7 蒙皮系统(Skinning System)

  • 蒙皮基本概念:蒙皮决定了骨骼主要控制哪一部分
  • 自动蒙皮(Auto Geometry)
    • Outline Detail:边缘细节,值越大轮廓越细致
    • Alpha Tolerance:阿尔法公差值,控制蒙皮细节
    • Subdivide:细化程度,控制蒙皮细节
    • Weights:是否自动设置权重,一般勾选
    • Generate For All Visible:为所有可见对象生成蒙皮
  • 编辑蒙皮(Edit Geometry)
    • Create Vertex:创建顶点
    • Create Edge:创建边线
    • Split Edge:拆分边,用一个新的顶点分离一个边

2.8 权重编辑系统

  • 自动权重(Auto Weights):自动计算并应用初始权重到顶点
  • 权重滑块(Weight Slider)
    • Mode(计算模式)
      • Add And Subtract(加减法):用于增加或减少权重
      • Grow And Shrink(增长和收缩):用于扩展或收缩权重影响区域
      • Smooth(平滑):用于混合权重,创建更平滑的变形
    • Bone(设置权重的骨骼):指定要调整权重的具体骨骼
    • Normalize(标准化设置):确保单个顶点的所有骨骼权重总和为1(100%)
    • Amount(数量级):控制权重调整操作的强度
  • 顶点权重编辑:显示和编辑当前选中顶点受各骨骼影响的程度

2.9 骨骼操作工具

  • Preview Pose(预览模式):可以预览动作并不会真正改变设置
  • Edit Bone(编辑骨骼):可以改变骨骼的位置、长度、方向、名称等
  • Create Bone(创建骨骼):创建新的骨骼节点
  • Split Bone(拆分骨骼):将一个骨骼一分为二

2.10 反向动力学(Inverse Kinematics, IK)

  • 基本概念:IK是一种动画技术,通过指定末端效应器的目标位置,自动计算中间关节的角度和位置
  • 工作原理:从目标位置反向计算,通过数学算法确定骨骼链中每个关节的旋转角度
  • 应用场景:角色抓取物体、脚部贴合地面、手部跟随鼠标等需要精确控制末端位置的情况
  • IK约束类型
    • Chain (CCD):可以自定义影响N个关节点,不能反向
    • Chain (FABRIK):可以自定义影响N个关节点,可以反向
    • Limb:只会影响3个关节点
  • 设置参数
    • Effector:默认的IK点位置
    • Target:会根据IK点位置生成真正的IK点对象
    • Weight:权重,当有多个IK控制同一点时权重会影响控制的百分比
    • Chain Length:IK影响的骨骼数量
    • Iterations:算法运行的次数
    • Tolerance:容错程度
    • Velocity:速度
    • Constrain Rotation:约束旋转程度
    • Solve from Default Pose:从默认姿势进行求解计算
    • Flip:反向(仅Limb Solver)
  • 使用技巧
    • 合理设置迭代次数和容错度,平衡精度和性能
    • 使用权重控制多个IK的混合效果
    • 从默认姿势求解可以获得更稳定的结果

2.11 IK系统优势总结

2.11.1 动画质量提升
  • 自然运动:IK可以产生更自然的关节运动,避免机械化的角度变化
  • 精确控制:能够精确控制末端效应器的位置,实现复杂的交互动作
  • 物理真实:模拟真实世界的物理约束,如重力、碰撞等
2.11.2 开发效率提升
  • 减少关键帧:不需要手动设置每个关节的关键帧,大大减少动画制作时间
  • 实时调整:可以在运行时动态调整目标位置,实现响应式动画
  • 重用性强:同一IK设置可以应用到不同的动画序列中
2.11.3 技术优势
  • 算法稳定:CCD和FABRIK等算法经过优化,计算稳定可靠
  • 性能优化:相比手动关键帧动画,IK计算性能更好
  • 约束灵活:支持多种约束类型,满足不同动画需求

2.12 Unity使用流程

┌─────────────────────────────────────────────────────────────┐
│                    骨骼动画工作流程                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │  准备精灵   │───▶│  创建骨骼   │───▶│  绑定蒙皮   │     │
│  │ 2D图片资源  │     │ 骨骼结构    │     │ 权重设置    │     │
│  └─────────────┘    └─────────────┘    └─────────────┘     │
│                                                            │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │  设置权重   │◀───│  创建动画   │◀───│  预览效果   │     │
│  │ 顶点影响    │    │ 关键帧      │     │  实时变形    │     │
│  └─────────────┘    └─────────────┘    └─────────────┘     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.11 详细操作步骤

步骤1: 骨骼创建
├─ 打开2D Animation Package
├─ 选择Edit Bone模式
├─ 在精灵上创建骨骼链
├─ 设置骨骼层级关系
└─ 命名骨骼节点步骤2: 蒙皮设置
├─ 选择Auto Geometry
├─ 调整Outline Detail(建议值:10)
├─ 设置Alpha Tolerance(建议值:10)
├─ 调整Subdivide(建议值:20)
├─ 勾选Weights
└─ 点击Generate For All Visible步骤3: 权重编辑
├─ 选择Edit Geometry模式
├─ 使用Weight Slider工具
├─ 选择计算模式(Add/Subtract, Grow/Shrink, Smooth)
├─ 设置目标骨骼
├─ 调整权重值
└─ 确保Normalize已勾选步骤4: 动画制作
├─ 切换到Preview Pose模式
├─ 设置关键帧
├─ 调整骨骼位置和旋转
├─ 预览动画效果
└─ 导出动画数据
http://www.dtcms.com/a/330182.html

相关文章:

  • 游戏盾的安全作用
  • RK3568嵌入式音视频硬件编解码4K 60帧 rkmpp FFmpeg7.1 音视频开发
  • Celery+RabbitMQ+Redis
  • Traceroute命令使用大全:从原理到实战技巧
  • IPC Inter-Process Communication(进程间通信)
  • 2小时构建生产级AI项目:基于ViT的图像分类流水线(含数据清洗→模型解释→云API)(第十七章)
  • 基于Supervision工具库与YOLOv8模型的高效计算机视觉任务处理与实践
  • 1.Cursor快速入门与配置
  • Multisim的使用记录
  • GQA:从多头检查点训练广义多查询Transformer模型
  • 蒙以CourseMaker里面的录屏功能真的是完全免费的吗?
  • C#标签批量打印程序开发
  • Redis 键扫描优化:从 KEYS 到 SCAN 的优雅升级
  • Nginx Stream代理绕过网络隔离策略
  • 论文Review 激光SLAM VoxelMap | RAL 2022 港大MARS出品!| 经典平面特征体素激光SLAM
  • 第4节 Torchvision
  • MC0473连营阵图
  • 在线教程丨 Qwen-Image 刷新图像编辑 SOTA,实现精准中文渲染
  • Docker部署RAGFlow:开启Kibana查询ES数据指南
  • 《Linux基础知识-3》
  • C语言:指针(4)
  • QT(事件)
  • 网络安全合规6--服务器安全检测和防御技术
  • MyBatis针对MySQL模糊查询中特殊字符(%和_)的处理方案
  • BGE:智源研究院的通用嵌入模型家族——从文本到多模态的语义检索革命
  • 模型驱动的自动驾驶AI系统全生命周期安全保障
  • C++入门自学Day10-- Vector类的自实现
  • Nginx学习与安装
  • Docker(springcloud笔记第三期)
  • docker 将本地python环境(有系统依赖)进行打包移到另一个服务器进行部署