1. 前言

上节课我们重点说了游戏开发和其他开发岗位的区别,以及如何高效地学习游戏开发。今天这节课,我们就正式开始运用上节课中提到的HOPL(hands-on project learning)学习大法开始第一个案例 — 《Flappy Bird》。同学们,千万不要担心自己有没有基础,哪怕你一点基础都没有,通过这个案例,你会发现游戏开发并没有想象中那么难,人人都可以学!

好了,废话不多说,我们直接上硬菜!本节课我们会完成《Flappy Bird》的场景动画以及角色动画制作,全程不需要一行代码,妥妥的!
(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

2. 开始前的准备

2.1 U3D最新版本下载

本案例使用的是最新版本的Unity,当然你用其他版本也是可以的,没有特殊的要求。不过作为技术人,我们应该走在时尚的最前沿~技术的更新迭代很快,Unity出版本的速度也绝对是杠杠的。新的版本都会有新的功能特性更新,用最新版有助于我们在技术上不掉队,有百利而无一害^ ^

下面是Unity最新版本的下载地址:
https://store.unity.com/cn/download?ref=personal

点击接受条款后,再点击 “下载Windows版安装软件” 即可。如果你是MAC电脑,则点击按钮下方的 “Mac OS X” 即可下载MAC电脑上运行的版本啦!装电脑哪个盘随意,我一般不装再C盘。另外安装的时候,它还会顺带帮你安装Visual Studio 2017 Community,这是晚点要用来写程序的微软的IDE(集成开发环境),这是个跨平台的IDE,功能十分强大。作为程序员,选择一个功能强大的IDE是必要的,Unity默认的IDE就是微软的Visual Studio。

2.2 美术资源准备

我建了个名叫 “U3D游戏开发入门到精通” 的QQ群(群号:730399676),或点击链接:http://c7.gg/cccgC 即可加入。

案例的美术资源可以到群内的共享文件夹进行下载。案例所有的美术资源都是用铅笔绘画制作,有绘画天赋的朋友也可以自己画,毕竟随便涂个鸦谁还不会呢?对吧!

下图就是美术资源展示:

自己制作美术资源的同学要注意,小鸟的身体和两个翅膀要分开画,因为晚点我们要分别制作小鸟和翅膀的动画。

3. 创建Flappy Bird新项目并导入美术资源

3.1 创建Flappy Bird新项目

下载完毕Unity最新版本后,双击打开并注册一个帐号即可使用,大家可以使用personal版本,这个版本不需要付费,学习使用完全足够。
如下图,

  1. 点击New来创建一个空的新项目
  2. Project name:给新项目起个名字(名字随便起,自己喜欢就行),这里我命名为FlappyBird
  3. Template(模板):选择2D,即启用2D游戏制作模式,因为我们的游戏是2D的,所以选择2D就可以了
  4. Location(项目保存本地地址):将项目保存在我的电脑的某个地址,建议不要放在C盘内(C盘是系统盘,C盘如果内存不足,电脑会很卡),可以放在D盘(随你喜欢)
  5. 其他不用设置,并点击 “Create project” 创建项目

    创建好后自动进入U3D软件窗口界面,具体如下:

    (获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

3.2 将场景视图和游戏视图改成手机屏幕尺寸

3.2.1 切换到iOS平台开发模式

大家都知道,Flappy Bird是款手游,所以我们需要把我们的场景视图(新手可以理解为创作游戏的区域)和游戏视图(新手可以理解为预览游戏效果的区域)的尺寸改成手机屏幕尺寸,具体操作如下:

  1. 点击上方工具栏最左边的File,并在下拉菜单中选择 Build Settings
  2. 在弹出的Build Settings的窗口中的Platform的列表里选中iOS平台
  3. 点击窗口右下角的“Switch Platform”按钮,从而切换到iOS平台
  4. 如果当时安装U3D的时候没有选择安装iOS平台的扩展包,则“Switch Platform”的按钮是灰色的,不能点。在这种状态下要先点击“Open Download Page”按钮来下载iOS平台的扩展包并安装成功然后再做上述第3步操作。

成功设置后会呈现下图的状态,原来的“Switch Platform”的按钮会变成“Build”按钮。这表示已经成功切换到iOS平台模式,我们就可以把这个Build Settings的弹出窗口关闭了。

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

3.2.2 设置场景及游戏视图的尺寸

接下来,我们还需要设置场景(Scene)和游戏(Game)视图的尺寸。在U3D中,只要我们设置好游戏视图的尺寸,场景视图的尺寸会自动匹配。所以我们这需要做的操作如下:

  1. 选中并点击Game视图区域的“Free Aspect”下拉菜单
  2. 在出现的下拉菜单中点击16 : 9 Portrait(9:16)

具体如下图所示:

设置成功后,我们的场景和游戏视图将会变为下图所示的样子:

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

4. 导入美术资源

下面,我们就需要把我们前面准备好的美术资源导入到我们的Unity游戏引擎中了。Unity中导入美术资源是很方便的,我们可以通过拖拽的方式直接将美术资源导入到U3D中。
具体操作如下图:

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

5. 场景动画制作

5.1 场景搭建

美术资源导入后,我们第一步要做的是在我们的Scene(场景)视图中搭建我们的场景。《Flappy Bird》这个游戏的场景是由一个地面和一个由房屋树木组成的背景图组成的。U3D中将美术资源添加到Scene视图中是非常简单方便的,依然用简单的鼠标拖拽即可完成。
具体操作步骤如下:

  1. 将背景图以及地面拖进U3D窗口左侧的Hierarchy中
  2. 在Scene视图中调节地面与背景图的大小并摆放好适当的位置
  3. 选中地面,在U3D窗口右侧的Inspector工具栏中找到Order in Layer(按顺序排列图层),并将对应的值改成0,从而确保地面的图片覆盖在背景图上

具体操作示意图如下:

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

5.2 场景动画制作

场景搭建好以后,我们就开始场景的动画制作啦~《Flappy Bird》的场景动画相当简单,为了达到玩家感觉小鸟是在向前飞翔的目的,我们只需要让地面,也就是我们的ground图片在不断向左移动就行。
具体操作步骤如下:

  1. 选中ground图片,并在U3D窗口顶层工具栏中选中window菜单栏。选择菜单栏中的Animation(动画),并在Animation子菜单栏中选择Animation,U3D中会弹出ground的Animation创作窗口
  2. 在ground animation窗口点击Create按钮创建ground的动画文件,并保存命名为ground_ani
  3. 点击Add Property按钮,在出现的菜单栏中点击transform(移动),并在transform的下拉菜单栏中点击position(位置)旁边的 “+” (添加)按钮
  4. 展开groud:Position下拉框,并上方红色录制按钮,开启录制模式。然后将右边时间轴的白线拖动到当前最后一帧,并在Scene视图中选中ground,按下键盘快捷键W进入移动模式,将ground在红轴(X轴)方向向左移动一定距离

    (获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

6. 角色“小鸟”动画制作

6.1 角色“小鸟”制作

  1. 创建名为player的GameObject:在Hierarchy里点击鼠标右键,在出现的菜单栏中点击“create empty”来创建一个GameObject(游戏对象)并将它的名称修改为player(你也可以起其他名字,随你喜欢),并在player对应Inspector界面里的transform里的position的x,y,z三个坐标都改为0
  2. 导入小鸟身体美术素材:将前面Assets中导入的小鸟身体的美术素材(文件名为bird)拖到player下面,并在bird对应的Inspector界面里的Order in Layer的数值设置为“1”。Order in Layer这个数值表示图层的顺序,数字越大则在图层的更上面
  3. 导入小鸟翅膀美术素材:将前面Assets中导入的两个翅膀的美术素材(文件名为wing_f 和 wing_n)拖到bird下面,并将wing_f 的Order in Layer的数值设置为“2”,wing_n的Order in Layer的数值设置为“0”
  4. 调整翅膀位置:调整两个翅膀的X轴向位置,是小鸟整体看起来是一只品相不错的小鸟,具体操作为:选中要调整的翅膀,并且按W键切换到移动状态(出现坐标系),然后鼠标左键按住红轴(X轴)向左拖动一定距离
  5. 调整player整体位置:通过调整player的X轴向位置,让小鸟在整个场景的偏左侧,否则到时候水管从场景右侧出现,玩家反应不过来。具体操作为:选中player,并且按W键切换到移动状态(出现坐标系),然后鼠标左键按住红轴(X轴)向左拖动一定距离

    操作完以上步骤后,对应的效果如上图。这里要特别注意的是player创建时候的坐标一定要设置成0,0,0,以及 “bird”、“wing_f”和“wing_n”在Hierarchy里的层级关系,Hierarchy这个单词翻译过来的意思就是层级。

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

6.2 “小鸟”的动画制作

  1. 创建小鸟的动画文件:在Hierarchy中选中player,并在软件窗口上方工具栏中选择window->Animation->Animation。在出现的Animation窗口中点击“Create”按钮创建player的动画并命名为player_ani.

  2. 让小鸟整体上下浮动:通过顺序点击Add Property -> bird -> Transform 出现以下画面,然后点击position右方的“+”号添加小鸟的动画。

  3. 添加小鸟向上关键帧: 将时间线(白色那根线)拖到整个0:15处,并点击添加关键帧,并将该关键帧的Y轴方向坐标改为0.2,具体如下图

  4. 添加小鸟向下关键帧: 将时间线(白色那根线)拖到整个0:45处,并点击添加关键帧,并将该关键帧的Y轴方向坐标改为-0.2,具体如下图

  5. 调节关键帧,使移动更顺滑:选中任意一个关键帧,并鼠标右键点击。在出现的菜单栏中按照 Broken -> Both Tangents -> Linear设置。给四个关键帧都设置成这样。

  6. 添加两个翅膀:
    添加两个翅膀:按顺序点击Add Property -> bird -> wing_f ,然后点击“Is Active”旁的“+”号。另一个翅膀也一样操作,按顺序点击Add Property -> bird -> wing_n ,然后点击“Is Active”旁的“+”号。然后我们要把藏在身体下面的那个翅膀隐藏掉,方法是,在第一帧和最后帧把wing_n : Game Object.Is Acitve的打钩给去掉,具体如下:

    做完以上六部操作,小鸟的上下浮动的动画就做好了,我们点击播放看下效果:

    (获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

6.3 “小鸟翅膀”的动画制作

  1. 创建翅膀的动画文件:在已经打开的Animation窗口,选择player_ani出现下拉框,点击“Create New Clip”,并把新的动画命名为player_fly_ani,具体如下
  2. 添加两个翅膀:按顺序点击Add Property -> bird -> wing_f ,然后点击“Is Active”旁的“+”号。另一个翅膀也一样操作,按顺序点击Add Property -> bird -> wing_n ,然后点击“Is Active”旁的“+”号。

    然后将左侧出现的wind_n旁的打钩给取消掉,隐藏掉这个翅膀,因为这个翅膀是在小鸟身体下面的,看不到,具体如下
  3. 添加 “wing_f” 翅膀旋转动画:按顺序点击Add Property -> bird -> wing_f -> Transform,然后点击Rotation旁的“+”号。
  4. 让 “wing_f” 翅膀挥动起来:如小鸟上下动画制作那样,在0:15和0:45处插入两个关键帧,并把0:15处的Z轴坐标值改成30, 0:45处的Z轴坐标值改成-30。然后我们把后面四个关键帧的位置往前挪动下,让翅膀挥动的快一点,挪动的方式就是鼠标左键按住关键帧然后拖到自己想要的位置,具体如下图
  5. 让 “wing_f” 翅膀按右侧点挥动:做到这里,我们播放下会到小鸟的翅膀挥动的很奇怪,因为翅膀的旋转中心在翅膀中央,而我们想要的是在翅膀的右侧端点旋转,所以我们要调整下旋转基点。我们在软件窗口Assets那个区域找到 “wing_f” 翅膀,然后在右侧Inspector区域找到Pivot那个属性的下拉菜单,然后选择下拉菜单的Right,然后点击下方的Apply。我们会发现,小鸟的翅膀在画面上往左移动了,那我们就要调回原来的位置。移动物体的方式前面有讲过,我们在Hierarchy中选中wing_f,然后按w键进入移动模式,然后按住红色轴向右拖动到自己觉得合适的位置即可。具体如下:

    我们再来播放下看看,现在的结果是我们想要的了,具体如下

    (获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

7 动画状态机制作

我们做的小鸟的上下的动画其实游戏开始前小鸟翅膀不动只上下运动的待机动画,而游戏开始后小鸟就要开始挥动翅膀了。所以,游戏的角色实际上是有很多种状态的,不同的状态要播放的动画是不同的。这里就以《Flappy Bird》游戏举例,游戏状态和动画之间存在的关系如下:

  1. 游戏开始前,小鸟要播放待机动画(Idle)
  2. 游戏开始后,小鸟要播放飞翔动画(Fly)
  3. 游戏结束时候,小鸟要播放死亡动画(Death)
  4. 玩家选择重新玩游戏时,小鸟又播放待机动画

那怎么样才能做到在不同状态下播放不动的动画呢,这里我们就要用到动画状态机。脚本程序就是通过控制动画状态机中的参数去实现在不同的状态下播放不同的动画的。这里我们就来做本案例的动画状态机吧!

7.1 创建动画状态机

我们在Hierarchy中选中player,然后在软件窗口的上方工具栏中按顺序点击Window -> Animation -> Animator,这样就可以创建出我们player的动画状态机了。创建出来后,我们调整下各工作窗口视图的大小,这样看起来更舒服。调整的方式就是鼠标左键按住某工作窗口的边界,然后直接拖动就行。比如:Hierarchy窗口,我们鼠标左键按出窗口右边框,然后往左拖到不能拖为止,这样这个窗口就能占比较小的为止,使得其他窗口占的面积更大。具体如下:

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

7.2 动画状态机制作

  1. 添加动画参数:点击Animator面板上的Parameters(参数)切换到Parameters面板,然后点击面板上的“+”号出现菜单栏,这里我们选择“trigger(触发模式)”,然后将创建出的新参数命名为Idle。同样的,我们再创建个trigger类型的参数,命名为Fly,具体如下

    (获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)
  2. 将参数与动画绑定:鼠标左键点击Base Layer这个窗口上的Any State长方块,然后点击鼠标右键并点击出现的“Make Transition”按钮,出现连线,将连线拖到player_ani(代表小鸟上下的动画)这个长方块上。这样表示,可以从任何状态播放小鸟上下的动画。点击白色的连线,在右边Inspector面板上找到Conditions(条件)属性,点击下方“+”号,然后在出现的下拉菜单中选择“Idle”这个参数。点击白色的连线,在右边Inspector面板上找到Conditions(条件)属性,点击下方“+”号,然后在出现的下拉菜单中选择“Idle”这个参数。这样就将Idle这个参数代表了player_ani这个动画(小鸟上下动画),后面程序只要通过控制Idle这个参数就可以播放player_ani这个动画了。同理,从Any State上再创建一条连线到player_fly_ani上,并把两者之间的连线的Conditions设置成“Fly”。具体如下

    (获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)
    到这里,我们已经制作完成了场景和角色动画,并制作了动画状态机。我们用Idle参数代表player_ani,用Fly参数代表player_fly_ani。后面我们只有通过C#脚本去控制这两个参数,让他们在不同的状态下播放不同的动画。我们来看下最终的效果:

    好了!大功告成,我发现贴游戏制作的帖子远比录视频要费时费力的多~ 本教程也有配套的视频教程,视频教程已经全部录完,等不及的小朋友可以加入我们的新手学习群进行学习哦~群号:730399676

下节课,我们讲《Flappy Bird》UI与交互及动态关卡技术,不见不散~

(获取本教程视频教程、美术资源以及本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,或点击链接:http://c7.gg/cccgC 即可加入,申请进群备注CSDN)

我们的本教程的大纲如下(已出课时,已增加跳转超链接):

1. U3D游戏开发从入门到弯道超车:序章
2. 《Flappy Bird》场景动画及角色动画制作
3. 《Flappy Bird》UI与交互及动态关卡技术
4. 《Flappy Bird》刚体与碰撞器、碰撞与检测
5. 《Flappy Bird》角色状态控制与游戏计分实现
6. 《Flappy Bird》开发流程图绘制与知识点思维导图总结
7. 《Flappy Bird》中所用知识点学习
8. 《Flappy Bird》独立完成指导与难点总结
9. 《Crazy Bird》角色自由飞翔与子弹发射
10. 《Crazy Bird》怪物自动生成
11. 《Crazy Bird》战斗主逻辑实现
12. 《Crazy Bird》不同怪物制作及战斗难度升级
13. 《Crazy Bird》BOSS制作及导弹自动跟踪效果实现
14. 《Crazy Bird》BOSS战斗实现
15. 《Crazy Bird》关卡管理与游戏优化 — BOSS、AI与关卡
16. 《Crazy Bird》关卡管理与游戏优化 — 关卡管理
17. 《Crazy Bird》关卡管理与游戏优化 — 游戏优化(1)
18. 《Crazy Bird》关卡管理与游戏优化 — 游戏优化(2)
19. 《Crazy Bird》开发流程图绘制与知识点思维导图总结
20. 《Crazy Bird》中所用知识点学习
21. 《Crazy Bird》独立完成指导与难点总结
22. U3D游戏开发从入门到弯道超车:总结

U3D游戏开发从入门到弯道超车(2):《Flappy Bird》场景动画及角色动画制作相关推荐

  1. 游戏控制杆OUYA游戏开发快速入门教程

    游戏控制杆OUYA游戏开发快速入门教程 1.2.2  游戏控制杆 游戏控制杆各个角度的视图,如图1-4所示,它的硬件规格是本文选自OUYA游戏开发快速入门教程大学霸: 图1-4  游戏控制杆各个角度的 ...

  2. Transform组件C#游戏开发快速入门

    orm组件C#游戏开发快速入门大学霸 Transform组件C#游戏开发快速入门 组件(Component)可以看作是一类属性的总称.而属性是指游戏对象上一切可设置.调节的选项,如图2-8所示.本文选 ...

  3. OUYA游戏开发快速入门教程1.2OUYA的硬件规格

    OUYA游戏开发快速入门教程1.2OUYA的硬件规格 从官网上购买回来的OUYA产品,包含游戏主机.游戏控制杆.说明书.电源线.HDMI线.电源线和电池,如图1-2所示.本节就来简要介绍下,游戏主机和 ...

  4. OUYA游戏开发快速入门教程第1章了解OUYA及其设备

    OUYA游戏开发快速入门教程第1章了解OUYA及其设备 OUYA是基于Andorid系统的游戏主机.围绕OUYA游戏机,已经形成一个完整的生态圈.在国外,OUYA已经成为知名的游戏平台.本章会站在玩家 ...

  5. OUYA游戏开发快速入门教程

     OUYA游戏开发快速入门教程 试读地址:http://pan.baidu.com/s/1o63a3W2 本教程是国内唯一OUYA游戏开发教程.本教程基于Unity全面讲解OUYA游戏开发方式.内容包 ...

  6. C#游戏开发快速入门2.2改变游戏对象的状态

    C#游戏开发快速入门2.2改变游戏对象的状态 改变游戏对象的状态,就是要改变游戏对象的位置.朝向和大小.那么,为什么要改变游戏对象的状态呢?当然是因为游戏对象的状态不合适了.在具体说明之前,读者应该先 ...

  7. C#游戏开发快速入门 2.1 构建游戏场景

    C#游戏开发快速入门 2.1  构建游戏场景 如果已经计划好了要编写什么样的游戏,在打开Unity以后,要做的第一件事情就是构建游戏场景(Scene).游戏场景就是玩家游戏时,在游戏视图中看到的一切, ...

  8. C#游戏开发快速入门教程Unity5.5教程

    C#游戏开发快速入门教程Unity5.5教程 试读文档下载地址:http://pan.baidu.com/s/1slwBHoD C#是微软发布的高级程序设计语言,这门语言和C语言一样,已经成为了大学计 ...

  9. Unity 2D游戏开发快速入门(内部资料)

    Unity 2D游戏开发快速入门(内部资料) 试读样张:http://pan.baidu.com/s/1hqh5oqw Unity 2D游戏开发快速入门4 前  言 Unity是一款综合的游戏开发工具 ...

最新文章

  1. C#实现web信息自动抓取
  2. 你是合格的程序员吗?(欢迎大家自测)
  3. struts 2中为什么抽象包不能包含action?
  4. u盘复制不进去东西_确认过眼神,是电脑小白的福音!U启动U盘启动盘制作工具...
  5. 让LwIP拥有PING其他设备的能力
  6. oracle函数 INITCAP(c1)
  7. python傅里叶函数图像_python实现傅里叶级数展开的实现
  8. 如何制作一款HTML5 RPG游戏引擎——第三篇,利用幕布切换场景
  9. Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形...
  10. python编程最大值_python求最大值最小值方法总结
  11. 显示器html看电视声音,电脑连接HDMI显示器后没声音(无需外置转换线)的解决方法...
  12. Java回收对象的标记 和 对象的二次标记过程
  13. 机器人方队解说词_方队解说词3篇
  14. mysql按照音序排列_什么是按音序排列?
  15. 超分算法RDN:Residual Dense Network for Image Super-Resolution 超分辨率图像重建
  16. 公安专业知识--哔哩桐老师
  17. 阿蒙森 斯科特_斯科特的单元测试定律
  18. 淘金(bzoj 3131)
  19. 如何满足实验室认可对不确定度评定的相关要求
  20. 云计算助力传统安防智慧升级

热门文章

  1. 2019luogu试炼场题解包:普及组(更新至2-17)
  2. 自己配深度学习主机的那些坑
  3. kaggle无法注册的问题解决
  4. error: unable to execute command: Segmentation fault: 11 解决办法
  5. 计算机房铺什么样的地板,机房铺哪种地板好些
  6. 在Windows2003下安装Blackice导致蓝屏的解决办法
  7. 打开录像 android,android录像/打开video文件
  8. Opengl ES之三角形绘制
  9. 合肥耀之阳电商:直通车点击率怎么提高
  10. Android编程权威指南(第15章 隐式intent)