‫欢迎回来｡
‫在这段视频中, 我们将为我们的球碗增加功能, 这样它最终可以从左向右移动,
‫并从球拍上弹开, 这当然是我们预期的功能｡
‫然后我们当然需要移动球拍｡
‫这就是我们稍后要做的, 在后面的一个视频中｡
‫然后我们就差不多完成游戏了｡
‫让我们从为球创建一个新脚本开始, 我将其称为球的移动｡
‫如您所见, 创建一个广告, 我们创建一个新的脚本, 然后我们可以使用Visual Studio打开它｡
‫在Visual Studio中, 我们有start和update方法｡
‫我们不需要update方法, 所以我们去掉它｡
‫然而, 我们需要的是一种方法, 它可以指示球可以移动多快, 这应该是一个公共值,
‫这样我们就可以在统一的范围内改变它｡
‫所以公共浮点数, 移动速度, 通常应该是浮点数和单位, 因为你想用你的速度, 在大多数时间里,
‫物理学和物理学确实和浮点数有关｡
‫然后我们需要一个值来告诉我们每次击球的速度｡
‫所以对于每一次用球拍击球, 它应该走得更快一点, 这样比赛就会逐渐变得更难｡
‫这就是我们通过创建另一个浮点变量来实现的, 这个变量叫做每次命中的额外速度｡
‫所以每一次点击它都应该上升一点｡
‫然后我们需要一个最大的速度, 这样球就不会在一个点上跑得太快, 也就不可能被接住｡
‫当然你可以说, 好吧, 我不想那样, 但我们想在这里设置一个上限｡
‫所以我们创建了一个上限, 这是我们的最大额外速度, 所以一般来说, 有一个最大速度, 我们需要一个变量的帮助,
‫我称之为命中计数器｡
‫这将计算球拍被击中的次数或任何球拍被击中的次数｡
‫现在我们要做的是移动球｡
‫让我们创建一个方法来移动我们的球public void, 移动球｡
‫我怎么称呼它呢, 它需要一个指向方向的矢量, 所以我把它叫做空气｡
‫现在, 该方向应该是规格化方向｡
‫所以这个移球方法可以从外部调用, 它也可以在另一个方法内部调用｡
‫例如, 可以从不同的类或不同的脚本调用它, 因为它是公共的｡
‫我们要做的是, 首先, 把给我们的方向归一化, 因为它可能会变成一个非常奇怪的值,
‫但是我们希望它被归一化｡
‫所以我们要做的是, 我们说方向是旧的方向, 但是作为一个标准化的值｡
‫所以它返回这个向量, 它的大小为1｡
‫这就是我们要做的｡
‫现在我们可以创造一个速度, 这样球的速度应该是现在记住它是什么.
‫首先, 我们有移动速度, 所以这个点的移动速度, 然后我们需要加上每次命中的额外速度,
‫所以我们需要知道我们有多少次命中｡
‫这就意味着我们继续说这个点命中计数器｡
‫我们有过几次点击率？
‫乘以这个点每次击中额外的速度｡
‫通过这种方式, 我们不断增加球的运动｡
‫现在, 为了使球具有这样的速度, 我们需要对球施加力, 在这种情况下,
‫就是对刚体施加力, 因为刚体是球的物理特性｡
‫这意味着我们需要一个刚体｡
‫2D, 也就是我所说的刚体2D, 等于这个点号得到游戏对象的点号分量, 而这个分量的名称应该是刚体到DX｡
‫所以我们取这个游戏对象的刚体2D组件｡
‫因此, 对于携带球运动脚本的游戏对象, 如果我们要添加多个球,
‫那么现在只能是我们的球, 我们可以这样做,
‫并且所有球都必须具有分配给它们的DX组件的刚体｡
‫现在我们知道了刚体2D, 我们可以继续影响它｡
‫所以我们改变它的速度, 它的方向乘以速度｡
‫所以这意味着无论我们的移动球方法的方向是什么, 都将乘以｡
‫也就是移动速度加上每次攻击的额外速度乘以攻击次数｡
‫为了让球移动, 我们需要调用moveball｡
‫最好的方法是在CO例程中调用它｡
‫所以启动一个代码例程, 这意味着我们不使用update方法, 这将是非常低效的, 因为我们将不断地调用该方法,
‫并真实的地改变速度, 等等｡
‫最好的方法是创建一个i枚举器方法｡
‫所以一个方法是, 它返回一个枚举数, 这样我们就可以用它来调用例程｡
‫什么叫例行公事｡
‫它是否迫使其他一切在新的行动发生之前等待它｡
‫通过这种方式, 您可以控制一个操作等待另一个操作而不是运行｡
‫同时, 我们将在后续教程中找到更有趣的方法来启动代码例程, 但现在我们只使用它来移动我们的球｡
‫所以我们首先需要的是一个新的方法, 它是公共的, 它返回一个AI枚举数, 正如你所看到的,
‫它支持我们的非泛型集合的简单迭代｡
‫所以这就是我们想要的｡
‫我们称之为一个开始球｡
‫这就意味着这个方法会在球开始移动的时候被调用, 这里需要一个布尔值, 叫做is
‫starting playerone equals true.
‫这意味着我们需要一个变量, 它是我们的起始参与者, 如果没有给定值, 它将是真的｡
‫也就是说我们的一号玩家将是首发玩家｡
‫这就意味着球会从左到右｡
‫好吧, 我会的
‫而那一个应该叫什么启动球｡
‫现在, 我们仍然得到红色下划线｡
‫这意味着我们仍然有一个错误｡
‫那是因为我们不退货｡
‫不是所有的cold puffs都返回一个值, 所以让我们返回一些值｡
‫因此, 我们需要的是, 首先, 我们需要重置我们的点击计数器｡
‫所以我们在这里把它设为零, 然后我们在4秒内返回一个新的重量｡
‫所以这就意味着我们要做我们的游戏｡
‫等待2秒钟｡
‫也就是说, 无论何时开始游戏, 或者叫到开始球, 我们都要等2秒钟,
‫在我们把计数器设为零之后, 我们才开始移动｡
‫这意味着我们要检查是第一个开始还是将要开始.
‫这个参与人是一号参与人.
‫如果是这样的话, 请继续｡
‫这个小点动球｡
‫所以我们在这里调用这个方法, 我们给予它一个新的向量2的向量, 它的值是-1和0｡
‫这意味着球会向左移动, 否则球应该向右移动｡
‫所以这个点移动球, 新的向量2, 现在它应该向右移动｡
‫所以1和0｡
‫所以1是x值, 0是Y值, 如你所见, 浮点y｡
‫好了, 现在我们有了, 我们只需要开始一个CO程序｡
‫所以开始CO程序, 在这里我们称之为这个点开始球｡
‫好了, 现在让我们保存｡
‫我们将需要添加一些进一步的功能到游戏稍后｡
‫但现在, 让我们在Unity中测试一下｡
‫所以我现在需要的是改变球的质量｡
‫它应该是超轻的｡
‫所以我就用0｡
‫01, 而对于重力标度, 我会选择0｡
‫我们的球根本不需要任何重力｡
‫现在, 正如你在这里看到的, 移动速度为零, 每次击中的额外速度为零,
‫我们的最大额外速度也为零｡
‫这不是我们想要的｡
‫当然, 我们希望我们的球移动, 一个好的起始值是400｡
‫一个很好的额外速度每击中50和最大速度应该是1000｡
‫这些只是我在测试后得出的值｡
‫让我们看看2秒后会发生什么｡
‫我们的球开始向左移动, 因为轮到一号球员了, 然后球来回移动｡
‫正如你所看到的, 速度是非常相等的, 所以它并没有真正改变｡
‫它总是相同的速度, 即使我们已经添加了这个额外的速度每命中值｡
‫因此, 让我们继续, 并增加额外的速度, 每次击中与它的计数器｡
‫所以我们需要添加一个方法, 它将计数器增加一, 我将把它命名为public void
‫increase hit counter｡
‫这样做的结果是点击计数器增加1｡
‫所以它说如果这个点命中计数器乘以这个点, 额外的速度小于这个点的最大额外速度｡
‫那么请继续增加点击计数器, 因为否则我们将有一个速度以及在一个点和无限的速度｡
‫所以它会上升, 上升, 上升, 上升, 再上升｡
‫好吧, 我会的
‫现在根本没有调用该方法, 并且在我们的球移动脚本中也不会调用该方法｡
‫但是, 我们将在脚本中称之为记录｡
‫所以我们会在接下来的视频中做这个｡
‫但到目前为止, 你已经看到了如何增加运动到你的球, 我们将继续在下一个视频｡
‫下一段视频再见｡
‫在此之前, 我们当然需要进行清理, 因此, 让我们将球的移动拖动到脚本中,
‫并保存场景, 在下一个视频中看到您｡