教程本文主要讲解Unity引擎自带的骨骼动画工具,以及动画的基本概念。然后新建工程示例,导入资源,并做一些动画的准备工作。

本教程适用于没有接触过Unity,或对Unity引擎和工具不太熟悉的开发者。目标效果我们要完成的最终效果如下:

骨骼动画与精灵图集我们先来对比下面两张图片:

第一张图中,龙被分为好几个部位(头、身体、手臂等)。第二张图展示了忍者的几种姿势,每种姿势都有一系列不同的动作。这就清楚展示了角色在游戏中的动画。

我们将忍者那张图称为精灵表或精灵图集。这类型的精灵常用在经典2D游戏中,现在依然很常见。

而龙精灵那张需要更现代的2D动画技术,通常称作“骨骼动画”。顾名思义,这种动画是基于每个骨骼的,每个骨骼都可以有特定的动作或动画。将角色身体几个关键部位分离开来,更利于开发者直接在引擎中创建动画。这种新的动画技术与常用来制作3D动画的类似。

本教程将着重讲解骨骼动画。然而,Unity并不能实现真正的骨骼动画,所以我们会进行模拟。准备制作动画的精灵将上面龙的图片放在工程目录的Assets/Sprites文件夹下:

在Assets目录下新建Scenes文件夹,然后新建场景命名为Test.scene放在Scenes文件夹下:

在项目视图(Project)中选中dragon精灵,查看检视面板(Inspector):

可以看到检视面板中Sprite

Mode为Single。这表示引擎在新建精灵时会用到整个纹理。因为图片中是需要单独动作的各部位,所以我们将Sprite

Mode改为Multiple。改完会发现新出来一个Sprite Editor 按钮:

目前Sprite

Editor的切割工具用于压缩图片并不完美。为了达到最好的效果,在检视面板下方将Format从Compressed改为Truecolor。然后点击应用。

选中dragon后点击Sprite Editor按钮。弹出一个新窗口:

窗口左上角有个Slice按钮,点击后会弹出菜单:

可以通过该菜单设置一些参数,这些参数决定了引擎如何切割精灵。如果将类型设为Automatic,引擎则会自动检测图片中角色的不同部位。你还可以设置切片的最小尺寸,锚点(切片将围绕哪个点旋转)以及下面其中一种方式:

● Delete Existing 将替换所有已有的切片● Smart将新建切片,同时保留或调整已有的切片●

Safe将新建切片同时不改变已有切片

将Type设为Grid下面的选项也会有所不同:

与Automatic一样,你也可以设置精灵的锚点,同时还可以设置Pixel Size,该值决定了切片的像素宽高。

对于dragon这张图,选择Automatic模式后点击Slice按钮即可。结果如下:

如图所见,编辑器将精灵的各部位切割成了不同的矩形。这就是用于创建角色的各个部位。之前提过,这并非完美的骨骼动画,每个部位的动画将分开进行。

双击其中某个矩形,会弹出其在精灵图片中对应的属性信息:

你可以更改生成精灵的名称、位置、大小及锚点。也可拖拽矩形顶点处的蓝点来改变位置和大小。选中矩形中心的蓝色圆圈表示锚点。

对于这张图,让Unity自动创建单独的精灵即可。但有些情况下一些更复杂的精灵可能需要手动控制。可以在图片上点击鼠标左键并拖拽来定义矩形。

放开鼠标后 ,Unity会按照选中的矩形范围生成一张新的精灵。

点击Trim按钮将矩形应到到精灵。然后对于你想生成的所有精灵重复以上步骤。

本例中的图片使用自动模式即可,无需手动生成。调整锚点接下来调整生成精灵的锚点。这一步对于动画至关重要。

基本上,需要将精灵锚点设在与父物体相连的部位。例如,头部锚点应该设为接近脖子的位置。这样就能确保角色进行动画时,所有的动作如旋转等,都是围绕该点进行,这样可以让角色动作更真实。否则角色动作会很奇怪。

可以将锚点想象为玩偶的关节。为了让玩偶运动,这些关节就要放在正确位置。这与锚点是类似的。

只需拖拽各精灵中心的蓝色圆圈即可调整锚点到正确的位置(即与父物体相连的点)。下图可看到头部正确的锚点位置:

尾部锚点如下:

理解后重复以上步骤设置其它部位的锚点。(黑点的锚点设为中心即可)

完成后点击Apply:

现在可以看到精灵旁多了个箭头:

点击箭头可以看到龙的各个部位:

组织角色现在可以将各个部位组合起来创建角色到场景中啦。

首先将黑点那张图片拖拽到场景中。它将作为整个角色到中心,具体作用后续再看,这里只要知道它是角色基点就好。

现在将龙身置于黑点,如下:

重复以上步骤直到龙拼接完成。最终效果如下:

虽然拼接完成了,但有些部位层次不太对。因为我们并未按照特定顺序来添加各部位。

调整层次前先将精灵存为单个游戏对象,以便后续进行动画。为保所有精灵层次正确,将黑点设为父对象,所有部位都作为其子对象。在层次面板中将所有部位拖拽到黑点下即可。

完成后如下图:

将父对象重命名为Dragon。此时移动Dragon即可移动龙的所有部位。

但如果想移动单个部位呢?例如,只想移动手,但手与手臂是相连的,所以手臂也应该要动。而如果移动手臂,则只有手臂会动,其它部位保持不动。为了实现这些,需要设置身体各部位的层次。

为了更直观,重命名各部位(右击选择Rename)如下:

可以将角色当作一颗树,有树根,树干和树枝。黑点就是树根,移动黑点会带动所有部位。这里的树干就是龙身,所以下一层精灵就是身体。其余部位都是树枝。但树枝还要继续分支,例如,尾巴那里,Tail

Tip就是Tail的树枝,等等。

按照如下层次组织角色各部位:

现在移动上臂,手臂其它部位也会跟着动。

重设精灵层次制作动画前最后一个待解决的问题就是层次。设置各个精灵的Order in Layer参数来解决层次问题。

建议大家使用以下设置:

•Dragon: 0•Body: 3•Head: 4•Left Leg: 4•Left Upper Arm: 5•Left Arm: 4•Left

Hand: 5•Right Leg: 1•Right Upper Arm: 2•Right Arm: 1•Right Hand: 2•Tail: 4•Tail

Tip: 5

最后的效果如下:

最后,将角色放到屏幕中央。只需将Transform的position设为(0,0,0)即可。

unity怎么显示骨骼_Unity3d教程:骨骼动画介绍相关推荐

  1. Unity 2D教程 | 骨骼动画:创建动画

    转载自:2016-02-13 Unity官方平台 本教程主要讲解Unity引擎自带的2D骨骼动画工具,以及2D动画的基本概念.本篇会添加一些动画,如默认状态.跳动.坠落等. 基础动画理论 制作动画要牢 ...

  2. unity怎么显示骨骼_浅谈Unity3D 骨骼动画

    最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 一. ...

  3. unity怎么显示骨骼_Unity骨骼优化(转)

    用Unity做游戏经常会用到3D角色,也就会用到骨骼动画.骨骼动画对性能的影响其实非常大的,在说这个问题之前,先来说说骨骼动画的原理. 我之前做过多种骨骼动画,包括写过2D的骨骼动画系统(类似于现在比 ...

  4. Cinemachine教程 | Unity中如何快速制作相机切换动画?

    摘要:使用Cinemachine可以快速制作相机切换动画,来看看我是怎么做的吧. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦. 好久不见.我最近 ...

  5. 【Unity】关于U3d与bip骨骼适配

    [Unity]关于U3d与bip骨骼适配 http://blog.csdn.net/kiki110120/article/details/50371662 写在2015/12/21 1.Generic ...

  6. 复制模型到骨骼-脚本教程

    复制模型到骨骼-脚本教程 运行脚本,脚本内容: 今天给大家将以下如何复制模型到骨骼的方法,制作前准备,首先将骨骼匹配模型,完后把绑定或调动作的模型打散和骨骼块数一样大致形状和骨骼一致.骨骼对位完毕后, ...

  7. Unity 捏脸整理及基于骨骼的捏脸功能实现

    目前实现捏脸功能的方式主要有两种.一个是Blendshape(融合变形),一个是基于骨骼驱动的方式,通过修改骨骼矩阵(bindpose)来影响SkinMesh.这两种方式的最终原理都是在shader ...

  8. 详解FLAS骨骼绑定教程

    [注意事项] 首先我们要了解Flash骨骼工具使用的注意事项: 1. 只能对元件(元件内部可嵌套组.元件.图形)和Flash绘制的图形进行骨骼添加: 2. 不能对组以及组中的物体(包括元件和图形)进行 ...

  9. blender怎么移动骨骼_cocos2dx blender 骨骼动画实现

    前言 cocos2d-x 中相关部分代码介绍  背景知识介绍 参考 一 简单3d 模型支持 第一步实现对3d 模型的简单支持,完成一个CCSprite3D 类 参考CCSprite 类 以及 CCGL ...

  10. Unity for kinect的开发教程

    安装Microsoft Kinect SDK 由于这套驱动程序是由Microsoft支持的,安装程序相对比较容易 - 您只需下载SDK安装程序包并按照屏幕上的提示操作即可. 下载并安装SDK 注意:安 ...

最新文章

  1. java ftp 判断文件是否存在_FTP判断文件是否存在
  2. 数据结构Java版之红黑树(八)
  3. SAP MM 采购订单与相关合同的价格差异问题分析
  4. iterm2 mac链接linux工具 桌面程序Transmit
  5. 美国人的网站推广方式千奇百怪
  6. 2020大学计算机知到答案,2020年_知到_大学计算机(济南大学)_网课答案
  7. MySQL记住密码_技术分享 | mysqlsh 命令行模式 密码保存
  8. Java API —— Map接口
  9. apk静态注射[转]-未实践
  10. Java语言中的-----访问修饰符
  11. LeetCode 891. 子序列宽度之和(数学)
  12. Python3 - 刷博客访问量脚本
  13. c++语言 xml数据绑定技术简介
  14. ubuntu16.04 wget java_linux centos ubuntu下载安装JDK wget方式下载JDK
  15. 哈弗F7x驾舱数字化测试 语音识别精准
  16. sql2008 评估期过期解决办法
  17. eclipse java字体 太小,如何在Eclipse for Java文本编辑器中更改字体大小?
  18. 领域驱动设计系列 (六):CQRS
  19. geoda权重矩阵导入matlab,空间计量 用geoda创建空间权重矩阵
  20. 曼切斯特编码波特率和比特率的关系

热门文章

  1. 推荐系统领域最新研究进展论文整理
  2. 国际数棋(图形界面、网络版、AI)
  3. checksum计算方法
  4. 可视化2D动画—cavas旋转的圈
  5. Package inputenc Error: Invalid UTF-8 byte “A1;Improper alphabetic constant. <to be read again>
  6. 网站服务器如何直接播放视频,视频放服务器链接直接播放
  7. 如何解决U盘装系统后磁盘总容量变小
  8. 如何在水经注微图中加载地形地貌图进行道路设计
  9. 怎样快速提高计算机能力,如何提高算术能力?不借助计算机、笔、纸等工具,怎么能快速心算出多位数计算结果?如:489x85 如:128965-98542有什么口决及速算的方法的详细步骤?...
  10. 电脑计算机安全模式在哪,电脑怎么进入安全模式? 进入安全模式详细教程