‫你好, 欢迎｡
‫在这节课上, 我们将制作旋转和移动的平台｡
‫我们将通过学习C++中的F旋转器类型来完成这个任务, 这样我们就可以在我们的谜题中添加更多的元素｡
‫让我们深入了解一下它是如何工作的｡
‫现在我们来谈谈如何填写旋转平台函数｡
‫旋转的方式和我们定位的方式非常相似, 我们有非常相似的功能｡
‫我们可以调用而不是调用, 得到演员位置, 我们可以调用, 得到演员旋转｡
‫如果我在这一行的末尾加上括号,
‫然后将鼠标悬停在函数上, Visual Studio智能感知会告诉我们返回的值是一个F旋转器｡
‫我们在处理位置时使用了F向量, 并且在前面的部分中讨论了旋转子｡
‫我们来看看把这个F旋转器放到一个局部变量中｡
‫所以类型是F旋转器, 我们称之为当前旋转, 等于获取演员旋转,
‫在行尾放一个分号.
‫我还将删除log语句, 因为我们不再需要它｡
‫然后我们要做的,
‫基本上和我们对平台速度所做的完全一样, 它是一种旋转速度乘以时间增量, 再加上当前的旋转｡
‫那么旋转速度应该是多少呢？
‫好了, 这就是我们要转到头文件并添加一个新的U属性的地方｡
‫我将把它添加到移动距离下面, 然后在任何地方编辑U属性,
‫然后给予它一个类别, 这个时候我将称之为旋转, 我将把类别名称从移动平台更改为移动｡
‫所以我们将有一个移动的类别, 一个旋转的类别｡
‫在这个属性下面, 我们将放置一个F旋转器, 称为旋转速度, 这里我们不会给予它一个默认值,
‫因为默认情况下, 我不希望任何平台旋转｡
‫所以默认值是000, 这正是我们所需要的｡
‫所以我会在行尾放一个分号, 现在我们可以回到C++文件,
‫在rotate平台函数中使用这个成员变量.
‫我们要做的是, 当前旋转等于当前旋转加上旋转速度乘以Delta时间, 并在行尾加上分号｡
‫现在最后一块拼图是让我们的演员适应新的旋转｡
‫所以正如你所料, 也许对你来说有一个小小的挑战, 事实上, 你会如何自己去做？
‫我们要用的是集合参与者旋转函数, 我们要传递一个当前旋转的参数, 像这样,
‫然后在行尾放一个分号.
‫不幸的是, 它的工作原理并不像这样简单｡
‫这引起了我的注意, 一些学生在助教中指出｡
‫丹, 非常感谢你, 他指出,
‫像这样把旋转加在一起并不总是有效的, 因为旋转本身会有一些复杂性｡
‫如果你一直旋转到-90度, 在某个点上你需要翻转到+90度, 等等｡
‫因此, 解决此问题的更好方法是调用添加演员局部旋转, 而不是设置活动旋转｡
‫您可以注意到, 这里还有一些添加演员的局部变换和用于位置的局部偏移｡
‫所以你也可以用它来代替添加位置｡
‫然而, 在旋转的边缘情况下, 我们不会遇到同样的问题｡
‫所以我建议你在这里添加演员局部旋转,
‫然后你只需输入旋转速度乘以Delta时间, 它就会自动为你完成剩下的代码｡
‫所以我们可以直接把这些线去掉｡
‫你已经得到了一个直接的局部旋转的附加值, 你也可以去掉这个, 得到当前的旋转,
‫因为我们也不再需要它了｡
‫因此, 让我们进入编辑器并单击compile按钮｡
‫完成后, 关闭日志｡
‫让我们选择一个平台的水平, 其中任何一个都将做, 并看看类别｡
‫所以我们有运动, 有旋转, 还有旋转速度.
‫所以我想让这个平台绕着Z轴旋转, 大概是每秒90度｡
‫所以旋转一圈需要4秒钟｡
‫我们继续按播放键｡
‫就这样｡
‫我们有一个旋转和移动的平台｡
‫所以不像移动平台的机制, 我们不必担心我们的旋转平台实际上会前后移动｡
‫如果你想让它做到这一点, 这是一个可能的扩展, 你可以想到｡
‫但对我来说, 这就足够了, 因为我们只是希望这些东西继续沿着同一个方向一圈又一圈地旋转｡
‫让我把旋转从这个平台上去掉, 因为我们不想让这个平台旋转｡
‫所以我想挑战你做一个哔哔声旋转平台, 基本上是另一个变体, 供我们使用,
‫并找到一个合适的网格｡
‫我会选择一个模糊的圆形的东西, 这样它就可以作为一个旋转平台,
‫给予它一个默认的旋转速度, 然后把它放在水平线上, 创造一个旋转平台的拼图, 让你穿过｡
‫暂停视频, 开始体验｡
‫好吧, 我会的
‫欢迎回来｡
‫接下来, 我们将进入内容抽屉, 查找C++类“Obstacle Assault”,
‫然后右键单击移动平台, 创建一个由此派生的蓝图类设备｡
‫我们将其命名为BP下划线旋转平台, 并将其放在内容路径中, 创建蓝图类｡
‫编辑器弹出后, 让我们将其停靠到主窗口｡
‫我将关闭似乎每次都要弹出的内容浏览器,
‫然后转到我们的主级别, 右键单击即可进入包含所有测试资产的孤岛｡
‫到这里来看看有没有好看的｡
‫我喜欢这些平台的外观｡
‫如果我右键单击它, 或者直接单击它, 则此处静态网格中使用的网格是SM平台A,
‫让我们查找该平台｡
‫让我们转到蓝图, 打开内容, 绘制, 转到全部, 然后搜索平台下划线M,
‫下划线A, 然后我们就得到了网格, 就是这里的网格｡
‫我是第二个｡
‫我将把它拖到我们的视口中, 以获得我们的平台｡
‫现在让我们看看它的中心位置｡
‫是否居中？
‫是的, 这很好也很重要, 因为我们确实需要它绕着中间旋转｡
‫否则这个圆形平台看起来会有点奇怪｡
‫我们还可以在x和Y维度上稍微放大一点, 使平台更大一些, 我们可以使用类默认值来删除任何平台速度,
‫因为我们不希望它移动,
‫并将移动距离设置为零, 然后查看旋转部分, 并将其设置为大约每秒90度, 这似乎相当合理｡
‫所以让我们继续, 并保存这个旋转平台｡
‫我们将进入我们的主要水平, 然后右键单击小浮岛, 我们有我们的水平设置我们的拼图, 点击,
‫去这里｡
‫然后在这个岛的上面, 我想放置我们的新蓝图｡
‫所以, 让我们取消搜索, 转到内容的根, 找到我们的旋转平台, 并将其放置在水平｡
‫我立刻意识到我真的想让它再大一点｡
‫那么, 让我们继续扩大规模｡
‫多几个单位, 也许三倍应该不错｡
‫我们去看看吧｡
‫现在, 我认为它还可以更大, 所以我将放大一点, 这样在X和Y方向上,
‫它比原来大五倍｡
‫好吧, 这是一个很好的宽旋转盘, 可能是相当具有挑战性的, 我们要通过｡
‫我将使用alt键复制这些内容, 并在整个平台上拖动几个内容, 尝试将它们放置在适当的位置,
‫然后再使用alt键拖动几个内容｡
‫所以我们有了一组很好的谜题, 让我们试着去解开｡
‫所以只是摆动他们周围一点, 直到我可以让他们几乎边缘到边缘｡
‫这里是能够有一个游戏模式真的很有帮助, 因为我们可以右键点击附近的平台和点击播放从这里, 这里是我们所有的旋转平台,
‫我们踩｡
‫现在对我们来说, 找到一条轻松穿过这些移动平台的路是一个小挑战｡
‫中间有一个死区,
‫我们可以试着把它清空, 但实际上很难进入死区, 所以我不打算在那里放任何东西来阻止它.
‫但你可以看到你去那里｡
‫这是一个我们可以克服的挑战, 但有点棘手, 这很有趣｡
‫好东西｡
‫在这节课上, 我们学习了如何制作旋转平台, 通过学习一种新的类型,
‫F旋转器, 以及我们如何用它来设置演员的旋转｡
‫我们下节课再见｡