‫欢迎回来｡
‫在这一章中, 我们将建立一个水果忍者克隆, 你可能知道游戏水果忍者, 如果你不知道它｡
‫看看YouTube上的视频｡
‫这是一个非常基本的游戏, 你必须切一些水果, 你只需轻轻一划, 然后你切他们,
‫他们脱落, 你得到一些分数, 你的目标是得到尽可能多的分数｡
‫当然, 有一些东西阻碍你发表观点, 那就是炸弹｡
‫所以只要你切了一颗炸弹, 你就输了｡
‫好吧, 我会的
‫差不多就是这样了｡
‫没有比这更多的了｡
‫我们将在本章中构建这些基本功能｡
‫让我们继续创建一个新项目, 并将其命名为“水果忍者”克隆, 然后创建该项目｡
‫在我的情况下, 我称之为V一｡
‫你不必这样做｡
‫那只是因为我已经有一个克隆人在我的项目下｡
‫好了, 我们到了｡
‫让我们继续, 首先, 改变我们的相机的背景｡
‫所以我不想有一个天空盒｡
‫我将使用纯色, 然后将该颜色更改为｡
‫我们来选一种颜色吧｡
‫我们选棕色的吧｡
‫在浅褐色的地方发出近乎巨大的迎头痛击｡
‫这就是我们的出发点｡
‫现在让我们导入现有的资产, 因为您可以下载一些资产, 它们附在本课程中,
‫让我们继续将它们全部拖到我们的游戏中｡
‫所以有香蕉切, 香蕉混合炸弹, 橙子切, 橙色混合｡
‫所有这些混合文件都是混合器文件, 让我们把它们拖到游戏中｡
‫好吧, 我会的
‫现在, 如您所见, 资产和材料都是直接为我们创建的｡
‫我们先为它们创建一个文件夹, 我将其称为模型, 然后将它们全部拖到其中｡
‫就算是材料｡
‫把所有的都拖进去｡
‫好吧, 我会的
‫首先, 让我们从一个橙子开始｡
‫把它拖进我们的游戏里｡
‫如你所见, 这是橙子, 这就是它的大小｡
‫所以也许缩小尺寸是个不错的选择｡
‫因此, 在这里, 转到模型并将比例因子更改为0｡ 3, 然后点击底部的应用｡
‫正如你现在所看到的, 它要小得多, 这将是一个更好的尺寸｡
‫否则就太大了｡
‫现在, 让我们对切橙色或切橙色0做同样的事情｡ 3, 然后单击“应用”｡
‫现在我们把橙子的部分也拖进去, 实际上是这里｡
‫所以现在你可能想知道这意味着什么｡
‫好吧, 我们有一个版本,
‫这是完整的橙子, 这是未切割的, 然后有一个切割的版本, 这是一个将创建一个一旦我们切片或滑动通过一个橙子｡
‫而且是两块｡
‫所以它包含两个部分, 然后会掉到不同的方向｡
‫所以我们会有一点切橙子的感觉, 或者一般来说, 或者切水果的感觉｡
‫好吧, 我会的
‫我们再去掉橙子的部分, 因为那只是为了演示｡
‫所以我们把橙子的部分删掉｡
‫现在, 橙子已经有了动画师, 正如你所看到的｡
‫不过, 它没有控制器, 我们现在也不需要｡
‫所以我们把它扔掉吧｡
‫拆下组件｡
‫现在, 我们只有网格渲染和网格过滤器转换组件｡
‫我们需要给刚体增加一个物理学｡
‫现在你可能想知道为什么是2D物理体而不是3D？
‫那是因为我只想让这个橙子进入2D空间
‫所以它不应该移动到它应该移动到顶部, 向左, 向右｡
‫但它不应该进入深层, 所以它不应该进入三维层次｡
‫这就是为什么刚体2D是适合我们的刚体｡
‫现在让我们添加另一个组件, 这是一个物理2D圆形对撞机, 因为正如你可能猜到的, 我们的橙子有一个圆形的形状｡
‫正如你现在看到的, 这将是一个二维对撞机｡
‫如果我们去2D房间, 你甚至可以看得更清楚｡
‫现在, 你看到围绕着我们的橙子的绿色的小线, 这就是环形对撞机｡
‫对撞机的半径, 你可以在这里找到, 你可以改变它｡
‫就像你在这里看到的, 让它变大或变小｡
‫如果你想让游戏更简单, 你会把它做得更大, 或者你甚至可以在一般情况下放大整个模型｡
‫但是0｡ 3是我们的正确半径｡
‫现在我们甚至可以消除这种偏移, 因为它是如此之小｡
‫它只是一种统一的东西｡
‫团结有时候会｡
‫好了, 现在刚体没事了｡
‫我们需要一个弥撒｡
‫我们需要一个重力秤｡
‫但是我们这里应该改变的是碰撞检测｡
‫这在大多数游戏中都没问题, 但我们希望它超快｡
‫所以我们想在这里进行快速检测｡
‫碰撞检测, 所以连续是我们更好的选择, 因为这是一个非常快的游戏, 我们切片的橙子,
‫它应该反应非常快｡
‫现在让我们把那个橙子作为预制件保存起来｡
‫我们来创建一个新的prefab文件夹, 文件夹prefab, 然后将橙子拖到这里｡
‫既然如此, 我们也来保存一下现场吧｡
‫所以保存场景, 我们称之为主场景｡
‫然后, 我们将需要一个脚本文件夹, 因为我们将使用脚本｡
‫让我们也创建一个脚本, 然后再创建一个新脚本｡
‫我看到锐利的字迹, 确切地说, 叫它水果｡
‫现在打开它｡
‫好吧, 在这里｡
‫我们要做的是制作一个切片水果｡
‫所以我们需要一个水果片｡
‫这是预先准备好的, 也就是说我们一切橙子, 就想得到橙子的碎片｡
‫所以这两个到我们橙子的两个部分, 这两个部分会向不同的方向脱落｡
‫这就是我们需要在这里设置的东西｡
‫这不仅是对橙子的, 也是对我们要用的所有水果的｡
‫所以让我们创建一个名为sliced fruit prefab的公共游戏对象, 因为我们将需要sliced fruit的prefab,
‫比如说, sliced橙子, 然后我们将需要一个方法来切片水果.
‫所以我将它命名为创建水果切片｡
‫我想做的就是实例化水果切片｡
‫是这样｡
‫水果切片｡
‫预制件
‫在哪个位置？
‫嗯, 和我们的橙子在同一个位置｡
‫然后变换旋转｡
‫同样的旋转也是如此｡
‫接下来我们要做的当然是毁掉整个橙子｡
‫所以我们的游戏对象, 也就是包含fruit脚本的游戏对象｡
‫好吧, 我会的
‫现在让我们再次进入统一状态, 因为我们还没有预制件, 所以我们还没有切片预制件｡
‫当然, 我们只有橙子的预制件｡
‫回到我们的模型, 把橙子的切割线再次拖到我们的博弈中.
‫现在, 橙子切割由两个不同的对象组成, 如您所见｡
‫这只是一个文件夹, 其中包含我们的橙子削减左和我们的橙色削减右｡
‫所以有两块橙子｡
‫我们希望在调用这个创建水果切片的方法后, 它们立即飞向不同的方向｡
‫所以让我们开始吧｡
‫让我们选取这两个切割片段并加入元件｡
‫现在我们要添加一个刚体, 而不是2D刚体, 因为我们不仅要把它们折向一边,
‫我们还想让它们稍微旋转一下｡
‫所以看起来更逼真一点因为水果不会总是完美地落在两边｡
‫它也会旋转一点｡
‫这就是我们需要用刚体3D来做的｡
‫现在, 关于碰撞检测, 我们可以把它作为离散的,
‫因为这些部分在碰撞检测方面并不重要｡
‫我们不想让他们再次被切片, 但我们仍然需要一个物理｡
‫盒子里｡
‫在这种情况下, 我们现在要用一个盒子对撞机, 当然, 盒子对撞机,
‫不是DD的盒子对撞机, 因为我们的刚体是一个3D物体｡
‫现在, 我们已经有了这个, 让我们把它们拖到我们的prefabs文件夹｡
‫现在, 我们将橙子切口作为一个预制件拖到预制件文件夹中, 因为我们需要两个部分,
‫并且需要一个预制件｡
‫好了, 现在我们可以去掉橙子的那部分了｡
‫从这里删除｡
‫把我们的场景也保存起来｡
‫现在, 像这个橙色和预制的橙子, 它们都需要有我们刚刚创建的脚本｡
‫因此, 让我们添加组件｡
‫让我们添加名为Fruit的脚本｡
‫现在, 当然, 你看这里, 我们将需要一个切片水果预制件｡
‫它是完美的, 因为橙子切是一个切片水果预制件｡
‫我们把它拖到这里, 然后把它应用到我们的预制橙子｡
‫否则它不会有剧本｡
‫所以你可以看到, 这个预制件有一个非常重要的脚本｡
‫好了, 现在我们结束了｡
‫让我们试着让它发生｡
‫因此, 让我们尝试创建一个切片水果, 我们可以使用update方法进行用户输入｡
‫所以如果输入点号得到键下来｡
‫只要用户按下一个键, 我们就可以使用键码空间｡
‫只要有人按下空格键, 我们就把这个叫做“水果切片”｡
‫好了, 我们先把剧本存起来｡
‫让我们回到Unity｡
‫现在我们的层次结构中有一个橙子是很重要的, 因为否则我们没有任何橙子来测试它,
‫因为我们还没有任何产卵｡
‫所以我们要创造扳手, 它会产生水果, 并把它们射到空中, 这样我们就可以把它们切开｡
‫但现在我们还没有｡
‫所以我们要确保我们的游戏里有一个橙子, 现在开始游戏吧.
‫实际上, 我太慢了, 所以让我们把它拖快一点｡
‫让我们进入2D房间, 把它拉起来｡
‫所以我有足够的时间, 让我们最大限度地发挥｡
‫然后按下按键｡
‫如你所见, 水果片在那里, 这一切都很好｡
‫当然, 看起来不太好｡
‫它应该以某种方式旋转或者应该向不同的方向移动｡
‫这就是我们在创建水果切片时所能得到的, 因为我们需要在这里添加一个刚体, 它会发生爆炸｡
‫为了做到这一点, 我们必须做以下事情｡
‫所以让我们创建一个刚体｡
‫在这个例子中, 我们需要一个刚体数组, 因为我们有两个刚体｡
‫左边的一个和右边的一个,
‫我就称之为RB, 或者说刚体｡
‫为了初始化它, 我们需要初始化它的游戏对象｡
‫因此, 让我们建立一个游戏物件, 并将其命名为的执行严修｡
‫现在, instantiate方法需要在其前面获得一个游戏对象,
‫这样, 它现在不仅会实例化游戏对象, 而且还会创建一个保存在Inst.exe中的游戏对象｡
‫现在, 我们可以使用该示例继续操作, 并将children中的get component组件和此处的组件转换为刚体｡
‫所以我想得到两个切片中每一个的刚体｡
‫这里它在抱怨, 因为它不是孩子的组件, 而是孩子的组件,
‫因为这里有一组刚体.
‫所以是复数｡
‫现在, 让我们回顾一下所有不同的部分｡
‫所以所有这些不同的切成片的橙色物体, 取刚体, 在RB中称为切成片的｡
‫所以我们要遍历这个数组, 对于每一个片段, 我们用随机旋转来改变变换旋转｡
‫所以我们只需要创建一个随机行｡
‫这很漂亮, 因为你可以看到随机方法有一个叫做旋转的属性, 它只给予我们一个随机旋转｡
‫我们甚至不需要在这里写一个方法来做任何随机旋转｡
‫所以这对于随机类来说是很酷的｡
‫现在, 接下来, 我们要加上一个爆炸,
‫这样碎片就能飞向不同的方向它们就能被炸向不同的方向.
‫正如你在这里看到的, 我们的刚体有几种添加方法, 添加力, 添加相对力, 添加爆炸力｡
‫好吧, 我会的
‫这正是我们想要的｡
‫所以让我们利用它｡
‫正如你所看到的, 有多个过载, 我们将在这里使用一个爆炸力｡
‫那么, 爆炸力应该有多强？
‫爆炸位置？
‫所以爆炸应该开始的位置｡
‫最后, 爆炸半径和爆炸力的大小应是随机的｡
‫不应该总是同一种爆炸｡
‫它不应该看起来总是一样的｡
‫所以有时它应该飞得更远, 有时飞得更远, 等等｡
‫所以我们来创建一个随机的思想范围｡
‫这里我想用的两个值是501, 000｡
‫所以我只想让爆炸力在501, 000之间, 这应该是随机的｡
‫那么爆炸的位置就应该转换成那个位置｡
‫所以我们爆炸的游戏对象的位置｡
‫在这个例子中, 它是我们的橙色, 也就是橙色的中心｡
‫最后, 爆炸半径应该是多少？
‫我现在输入5｡
‫这正是我测试过的值, 在这里运行良好｡
‫现在, 我们使用5个F, 再次保存, 然后返回到Unity, 现在, 我们按下键｡
‫如你所见, 我们的水果福尔斯下来很酷｡
‫现在, 如果我们复制一个橙子, 把每个橙子稍微重新定位一下｡
‫我们来更改这里的值｡
‫然后你会看到我们的小爆炸看起来有多酷｡
‫好吧, 我会的
‫最后, 这个也是｡
‫现在让我们重新开始游戏｡
‫你可能会看到旋转是随机的, 爆炸本身也是随机的｡
‫所以它们飞向不同的方向, 不同的力量等等｡
‫所以我觉得这看起来已经很酷了｡
‫所以你看, 我们做了很棒的爆炸, 是的, 我认为这对这个视频很好｡
‫在下一个视频中, 我们将检查如何繁殖这些水果, 因为现在我们必须将它们拖到场景中,
‫这不是最好的解决方案｡
‫所以我们还是像往常一样保存现场｡
‫别忘了保存场景, 下一个视频中再见｡