‫你好, 欢迎｡
‫在这节课中, 我们将学习如何设置运动平台, 在其成员变量中使用矢量速度｡
‫我们将看看如何使用Delta时间使其运动帧速率独立｡
‫好吧, 我们开始吧｡
‫所以到目前为止, 我们一次只更新了向量的一个分量｡
‫如果我告诉你我们不必这样做呢？
‫如果我们可以一次更新整个向量一定的量呢？
‫我们可以把向量和其他向量相加, 如果我们在上一节看到的话｡
‫所以我们能做的就是, 到我们的移动平台H上, 创建一个移动平台的速度矢量,
‫它告诉我们, 我们要去的方向和速度｡
‫我们这样做的方法是创建一个大家都很熟悉的U属性, 然后在任何地方编辑它, 这样它就可以在检查器中看到了,
‫然后它就变成了一个F型矢量,
‫就像我们之前做的那样, 我们称之为平台速度, 现在我们可以给予它一些东西｡
‫所以我们要做一个F向量构造函数, 然后我们在X分量中给它一个100, 在其他分量中给它0和0,
‫然后用分号结束｡
‫我还想再给你们展示一个技巧, 就是沿着编辑, 我们可以在任何地方, 把另一个逗号分隔的参数,
‫放到U属性中, 看起来有点像函数.
‫实际上, 你可以把一个叫做范畴的东西加上大写的C, 然后加上等号｡
‫我通常会在等号之间留一个空格｡
‫然后你可以给予一个你想显示的类别｡
‫在这里, 您可以看到变换渲染复制的类别｡
‫这些就是我们要称之为移动平台的类别, 这样我们就有了一个移动平台类别来放置这些变量｡
‫请注意, 我用双引号将该类别括起来｡
‫这是正确的语法
‫你确实需要包括这些｡
‫然后我们可以在C++中使用这个新的成员变量｡
‫因此,
‫不设置当前位置的X分量, 让我完全删除这行, 并重写为当前位置等于当前位置加上平台速度｡
‫所以把分号放在行尾, 让我们进入Unreal, 点击compile, 看看结果如何｡
‫所以编译成功了｡
‫你可以看到, 现在我的移动平台上有一个移动平台部分, 平台速度,
‫x分量设为100｡
‫如果我去按播放键会发生什么？
‫好的, 平台快速地向远处移动, 因为我每一帧都添加100个单位｡
‫这是很多｡
‫但我确实希望它以每秒100厘米左右的速度移动｡
‫也就是每秒一米｡
‫它不是很快｡
‫那么, 为什么会发展得这么快呢？
‫嗯, 因为我的帧速率｡
‫好吧, 如果我在一个较慢的系统上, 它会移动得更慢｡
‫如果我在一个更快的系统上, 它会移动得更快｡
‫这似乎说不通｡
‫那么, 让我们来谈谈如何使用Delta时间｡
‫什么是Delta时间？
‫在Unreal中使用Delta时间可以告诉我们执行每个帧需要多长时间｡
‫三角洲时间在哪里？
‫如果您查看Visual Studio代码, 可以看到Delta time是tick顶部提到的一个变量｡
‫这实际上是一个输入参数｡
‫它是函数的输入｡
‫所以我们可以像使用局部变量一样使用它, 我们可以在tick函数体中使用它.
‫因此, 它告诉我们执行一个帧需要多长时间｡
‫但为什么这很重要呢？
‫因为当我们把某个东西乘以时间增量时, 它本质上使我们的游戏帧速率独立,
‫这基本上意味着游戏在快速或慢速计算机上的行为是相同的｡
‫让我们看一个例子, 如果我想每秒把东西向左移动一个单位｡
‫下面是它在不同计算机上的外观｡
‫我的电脑很慢｡
‫它每秒只能拍十帧, 而一台快速的计算机每秒可以拍100帧｡
‫现在, 这些帧的持续时间不同了｡
‫因此在速度较慢的计算机上, 帧的持续时间为0｡ 1秒｡
‫如果我只能在一秒内装下10个, 在一台快速的计算机上, 它将是0｡ 01秒, 因为它可以更快地执行任务,
‫所以要少得多｡
‫计算一帧不需要那么长的时间｡
‫所以如果我乘以帧的持续时间, 我就把一个单位乘以帧的持续时间｡
‫然后你会在1/2中看到它｡
‫因此, 在执行了十帧的情况下, 我得到了一个移动单位｡
‫这也是事实｡
‫如果我已经执行了100帧, 我仍然得到一个移动单位｡
‫所以我想挑战你们乘以Delta时间｡
‫我们要做的就是记住, 我们可以用向量乘以一个浮点数来缩放它们的大小｡
‫在C++中我们可以使用星星运算符｡
‫这就是我们做乘法的方法｡
‫没有乘号运算符｡
‫它会和X混淆, 所以我们用星星表示乘法, 我希望你编译并测试你的结果｡
‫所以乘以时间增量, 乘以速度增量, 看看会发生什么, 加上视频, 试试看｡
‫好吧, 我会的
‫欢迎回来｡
‫所以这里我们要乘以的是平台速度｡
‫现在我们可以把它放到一个单独的变量中, 但实际上,
‫我们可以把乘以delta的时间放在这一行的末尾, 显然是在分号之前, 因为它在语句的末尾之前｡
‫有趣的是,
‫这里有一个运算符的优先级, 平台速度和Delta时间之间的乘法在当前位置相加之前发生｡
‫现在, 这遵循正常的数学规则, 这些规则的完整列表｡
‫我不打算在这里详细介绍, 但是你们可以在维基百科上, 看一下运算顺序｡
‫在不同的语言中有很多不同的规则, 无论是身体质量, 体重, 足重, 床重｡
‫有很多不同的缩写｡
‫所以不管你是用哪一种长大的, 我都会推荐你用那一种｡
‫对我来说, 这是身体质量, 但在其他地方是不同的｡
‫值得注意的是我们可以这样写, 但是如果我们想让它确保一些事情以不同的顺序发生,
‫那么你可以用括号来表示｡
‫所以我可以, 为了让事情更清楚, 我会把这个乘法用括号括起来, 只是为了告诉你们这是怎么回事｡
‫首先是乘法, 然后是当前位置的加法｡
‫让我们进入Unreal来测试一下｡
‫我们将点击, 编译, 完成后, 让我们点击播放｡
‫现在我们看到平台以更正常的速度移动因为它实际上是以每秒一米的速度移动, 这对于一个移动的平台来说是可以的｡
‫大家可以看到, 这帮助我们降低了速度, 但现在这是一个帧速率, 独立的速度｡
‫如果我的电脑是chugging沿着, 因为其他事情正在进行的背景下, 这仍然会看起来一样,
‫并发挥相同的游戏｡
‫好东西｡
‫我们下节课再见｡