‫你好, 欢迎｡
‫在这节课中, 我们将研究如何将我们的性格运动联系起来, 这样我们就可以将冲突向前推进,
‫并环顾我们的世界｡
‫经典的移动在第一人称或第三人称射击游戏｡
‫让我们来看看它是如何完成的｡
‫所以继续让我们的角色移动工作,
‫我们首先要绑定一些输入, 但我们也要知道要把这些输入绑定到什么｡
‫幸运的是, 当涉及到字符时, 我们有很多简化的东西｡
‫毕竟, 虚幻真的是一个引擎, 优化的东西, 如射击游戏, 字符游戏｡
‫让我们来看看角色演员类已经提供的一些运动函数, 不仅仅是角色运动组件,
‫角色演员类也提供这些函数, 并且通常会将很多函数传递给角色运动组件, 但不一定如此｡
‫让我们看看我们要处理哪些运动函数｡
‫首先, 我们将添加运动输入｡
‫添加移动输入基本上是一个向量, 告诉你要向哪个方向移动｡
‫如果是向前的向量, 你就向前移动｡
‫如果它是一个向后的向量, 你就向后移动｡
‫如果是右向量, 你就向右移动, 以此类推｡
‫矢量的大小决定了你在这个方向上移动的速度｡
‫接下来是控制器俯仰输入｡
‫这就是上下观察, 这显然非常有用｡
‫当你有了鼠标, 你想通过上下移动鼠标来上下查看｡
‫然后是add控制器, 您的输入会左右移动｡
‫最后还有一个跳转功能, 就是你可以点击空格键, 然后跳转｡
‫记住这些, 我们接下来要做的是在我们的角色演员类中创建一些绑定,
‫这些绑定绑定了一些输入｡
‫键盘､ 鼠标､ 控制器的一些输入｡
‫所以我们要做一些, 然后我们要做一个挑战, 做其余的｡
‫现在让我们转到Visual Studio代码, 我现在是射击游戏角色｡
‫我们注意到这里已经有了设置玩家输入组件函数｡
‫这是我们需要绑定输入的地方｡
‫要按F12键转到C++｡
‫我将按下Alt, 转到C++, 并找到我们设置的位置｡
‫第一件事是它给我们这个输入组件, 我们要绑定｡
‫如果你还记得, 这是我们的做法｡
‫我们有一个玩家输入组件, 我们使用箭头操作符, 然后在这里执行绑定函数｡
‫所以它要么是一个绑定访问, 要么是一个绑定操作, 这取决于它是一个离散的操作, 比如跳转,
‫还是一个有值的操作, 比如上下查找或移动｡
‫现在, 即使当我们使用关键点移动时, 我们仍然倾向于使用轴绑定它｡
‫所以我在这段视频的第一部分要打个错字｡
‫我稍后会更正它, 但请继续使用绑定轴, 而不是这里的绑定操作｡
‫因此, 为了更进一步, 我们需要在项目设置中设置这些操作和轴｡
‫让我们回到虚幻世界｡
‫转到“设置”､ “项目设置”, 然后将其停靠下来, 以便我们可以非常清楚地看到它,
‫然后转到输入部分｡
‫因此, 引擎输入并设置一些轴映射和一些操作映射｡
‫所以我马上要处理的是坐标轴映射, 首先, 我们要向前推进｡
‫我们也要看一下｡
‫记住, 我们没有前进和后退的关系因为我们可以用负尺度来做.
‫例如, 我想将W Quay设置为前进｡
‫这是第一个尺度｡
‫但如果我想让se键变成后退键, 我仍然可以用前进键, 但给予它减1的刻度｡
‫只是给你一个简短的提醒｡
‫向上看也一样｡
‫我将使用鼠标来完成此操作｡
‫我们将在下一节课中讨论控制器输入｡
‫我们将使用鼠标y｡
‫记住, y是上下的, 而不是左右的因为它有点高, 不是吗？
‫Y比X稍微高一点｡
‫反正我记得是这样的｡
‫鼠标Y是上下移动的, 然后我们要调整刻度, 看看方向是否正确.
‫但基本上, 如果我们下降, 它会给我们负值, 如果我们上升, 它会给我们正值｡
‫因此, 我们可能需要调整一下lookup, 看看它是否会朝着正确的方向发展｡
‫但是, 我们可以反转或不反转比例, 这取决于输入的类型｡
‫所以一旦我们得到了轴名, 我们就可以回到C++了｡
‫我们将使用文本宏和轴名称文本绑定它｡
‫然后我们需要说明我们要调用的函数对象, 以及我们要调用的函数｡
‫我们现在还没有要调用的函数, 所以我要在我的C++头文件中创建一个新的私有函数.
‫这是一个空函数, 叫做向前移动｡
‫它会取浮点数, 也就是坐标轴的值｡
‫最后用分号结束｡
‫我有一个小技巧, 这里有一个小的扩展, 它可以帮助我更快地实现这些东西,
‫通过控制shift, p和｡
‫如果我输入create implementation, 它会在C++文件中为我创建该实现｡
‫真的很好很容易｡
‫扩展名｡
‫如果我过去, 我总是忘记我的扩展名, 所以我会去看看它可能是什么｡
‫是的, 就是这个小东西, C++辅助器｡
‫如果你继续为你的VTS代码安装这个, 它只是允许你做这类事情, 这是非常好的｡
‫非常方便｡
‫这就是我们要设置它调用的函数｡
‫所以首先, 我们说这个, 这是目标｡
‫当前对象是此函数的目标｡
‫然后我们继续, 把这个问题放到完全限定函数问题中, 字符, 冒号,
‫冒号向前移动, 这样我们就可以绑定到这个函数了.
‫最后, 我们要做的是把轴的值传递给我们要调用的函数, 也就是父函数｡
‫所以我们什么都不用做｡
‫我们可以做广告移动｡
‫像这样投入｡
‫因为这是向前移动的方法, 我们需要得到参与者的向前向量｡
‫我们的方法是这样做的, 我们可以这样做, 然后我们希望它是向前的, 我们的访问值给我们的数量,
‫所以我们可以乘以轴的值｡
‫这将给予我们正确的结果｡
‫所以我们要把前向矢量乘以轴的值｡
‫如果是1, 我们就前进, 如果是-1, 前进的向量就变成了后退的向量,
‫我们就用这个函数后退.
‫这就为我们的下一步做好了准备｡
‫好极了｡
‫接下来的事情就是为我们包扎起来｡
‫所以我们去复制吧｡
‫我总是喜欢复制这些字符串引用, 这样我就不会出错｡
‫做一个查找, 而不是绑定前进, 让我们回到文件的头部, 并创建一些新的东西｡
‫这将是一个向上查找的浮点轴值｡
‫就像这样｡
‫如果我控制P班次, 并创建实施, 就可以继续进行, 并节省我一点时间｡
‫这一次, 我们不想添加运动输入, 而是想使用我们可以使用的其他函数之一｡
‫也就是广告控制器的音高输入, 因为我们想基本上提高音高｡
‫所以这次我们可以做广告控制器｡
‫俯仰输入并直接传递轴值｡
‫现在就去
‫现在, 如果你是一个有经验的C++程序员, 你可能会说, 嘿, 这个函数基本上什么都不做｡
‫它只是用相同的参数调用其他函数｡
‫所以它并没有发挥多大作用｡
‫你是对的｡
‫所以我们可以做的是, 查找a shooter字符, 这样我们就可以调用在这个类上定义的函数a
‫shooter字符｡
‫或者我们可以说, 有一个控制音高的输入, 我们可以直接调用它, 对吗？
‫如果我们用F12找到它的定义位置, 然后导航到它, 你可以看到它是在pawn
‫h中定义的.
‫所以如果你向上滚动, 你可以看到在这里我们会找到一个类｡
‫让我们, 我们甚至可以搜索班级空间, 类似的东西｡
‫这里我们有一个卒是类｡
‫让我们回到射手角色, 我们可以尝试, 让它稍微短一点,
‫我们来做一个兵冒号, 冒号, 添加控制器音高输入, 这样它就可以自动直接调用父函数,
‫而不必通过我们自己的函数｡
‫这也是一种有效的方法, 但只是没有必要｡
‫所以我要把它注释掉, 这样你就可以参考它, 如果你想这样做的话｡
‫但我建议你这样走短一点的路｡
‫在尝试编译它的过程中, 我注意到, 我一直在做绑定操作, 而不是像我一直想做的那样,
‫在Axis后面调用｡
‫所以你可能一直在对着屏幕尖叫｡
‫让我们继续重新构建它｡
‫顺便说一下, 我是用控制键B和选择构建选项来完成的｡
‫这是一个简单的射击编辑器win 64开发版本, 这对我来说只是一个更快的方法, 而不是过去点击编译按钮｡
‫我会看的, 但我今天语法不对｡
‫当然我们需要在这个函数前面使用&号来表示我们想要得到指针｡
‫我们希望在这些函数前面使用&符号, 以便在这里得到正确的语法｡
‫好吧, 我会的
‫所以在我纠正了这两个非常常见的错误之后, 一个是我得到了错误的函数调用,
‫另一个是我没有在我试图使用的函数前面得到一个&号｡
‫让我们进入虚幻看看这是否真的有效｡
‫如果我点击播放, 使用W键和S键, 您可以看到我可以向前和向后移动｡
‫太神奇了｡
‫而用鼠标我可以上下看, 但它是感觉倒置的时刻, 以我的运动｡
‫我将转到产品设置, 在那里单击减1, 然后单击播放｡
‫现在如果我上下移动, 感觉就对了｡
‫请注意, 我实际上是在两个不同的位置产卵｡
‫那是因为当我投进第二个球时, 我必须让球员首发｡
‫我不知道在这一关已经有一个了, 这就是为什么我有时在这里产卵, 有时在不同的地方产卵｡
‫你可能会发现同样的事情｡
‫所以现在是挑战时刻｡
‫让我们把你们的电影版权绑定起来, 这样你们就看起来不错了, 这样我们就可以完全控制我们的行动了｡
‫重复我刚才在课上对这两个问题所做的过程, 你们可能已经沿着了｡
‫如果没有, 你可以进去看修改｡
‫我也希望你能尝试一下跳跃功能｡
‫如果你觉得勇敢, 暂停视频, 试一下｡
‫好吧, 我会的
‫欢迎回来｡
‫所以我们来试试吧｡
‫首先, 我们重复上述步骤, 向前看, 向上看｡
‫所以我们要搬家了, 对吧？
‫我们要做的不是向上看, 而是向右看｡
‫我们可以继续复制这些内容, 以便在项目设置中设置轴｡
‫因此, 再添加几个轴映射｡
‫第一个是move, right, 我将把它映射到键, 一个左四.
‫所以这是负的｡
‫A是-1, 因为它实际上是左, 右的对立面, 而DX现在是4.
‫显然, 您也可以在此处添加箭头键｡
‫我这么做不是为了保存时间｡
‫但是你可以继续做同样的事情｡
‫您可以在此处添加更多关键点, 任意数量的关键点都可以映射到该单轴外观｡
‫好吧, 我知道了
‫我们将使用鼠标x｡
‫我认为一个就足够了, 而不是减一个｡
‫我不认为我们必须颠倒这个｡
‫然后我们要做的是稍微改变一下绑定方式｡
‫所以我将在这里创建一个右移函数｡
‫现在你可能想知道, 为什么我们要用不同的方式来做这件事？
‫为什么是右移？
‫为什么我们不直接调用以添加移动输入？
‫不同之处在于我们要做一些计算｡
‫我们在这个乘法中加入了一个向量, 这就增加了一些信息, 证明了这个函数的存在性｡
‫这一次, 我们不想得到向前的动作, 我们想得到右向量, 然后乘以坐标轴的值,
‫然后我们想调用, 而不是向前｡
‫我们现在要呼叫移动｡
‫好吧, 我知道了
‫我们不想添加控制器俯仰输入, 而想做你的输入｡
‫记住横滚俯仰, 你是飞机上的｡
‫如果你不确定哪个是哪个, 你可以在维基百科上查一下, 然后继续建立那个｡
‫希望这次我没有把语法搞错｡
‫让我们跳到编辑器那里, 点击播放, 就这样｡
‫我可以环顾四周｡
‫看起来不错｡
‫我可以左右扫射｡
‫我可以前进和后退｡
‫所以剩下的就是jump, 它是一个动作映射而不是一个轴, 因为它是一个离散的动作,
‫我称之为jump并复制它｡
‫转到Visual Studio代码｡
‫然后关闭编译窗口, 这里我不再绑定一个轴, 你已经知道了.
‫我将绑定一个动作绑定动作｡
‫就这么简单｡
‫它还是从这里的文本开始｡
‫的跳跃｡
‫但是斧头的不同之处, 你们可能还记得｡
‫就是我们需要使用这个语法I输入事件, 这是一个枚举, 这意味着它基本上可以接受很多不同的选项, 双击,
‫按下释放等｡ 我们要像这样跳到媒体上｡
‫这就是我强调的, 按下, 一旦我们知道可以继续做同样的事情, 我们就应该跟注,
‫然后跳转.
‫那么, 跳跃的定义在哪里？
‫是不是在——？
‫我们来看看｡
‫不, 但可能是在角色里｡
‫所以我要做一个对照P来寻找性格｡
‫H点
‫打开它, 看看这里, 是否定义了跳转函数.
‫跳转然后打开括号通常是在头文件中查找函数的好方法｡
‫果然, 我们已经得到了那个功能｡
‫您可以查看文档｡
‫我经常喜欢直接使用源代码, 而不是查找任何文档文件｡
‫我只是发现有时访问它要快得多, 特别是当你有控制权的时候｡
‫P在Visual Studio程式码中｡
‫所以我们要做的不是, 冒号, 冒号, 我们要做一个字符冒号, 冒号.
‫所以应该是&号, 一个字符冒号.
‫这是因为它是在类上定义的｡
‫我们不能在执行冒号运算符的时候, 去查找层次结构, 然后就跳转了｡
‫所以字符, 冒号, 冒号跳｡
‫别忘了我需要在行尾加分号｡
‫继续建造, 看看我们现在是否能跳跃｡
‫好吧, 构建工作正确｡
‫让我们转到沙盒级别｡
‫按播放键, 试着跳｡
‫我没有钥匙, 所以可能会妨碍我｡
‫添加空格键作为关键, 我想要的跳跃和前进, 并点击播放｡
‫好耶
‫我可以跳上跳下, 在空中移动, 四处移动｡
‫好极了｡
‫所以我们学会了如何把我们的斧头和动作绑在一起, 而我们还没有学会｡
‫我们已经修改了它, 但我们已经看到了我们想绑定到一个字符,
‫以获得经典的字符跳跃, 扫射, 移动和寻找与您的相机, 我们都知道和爱从我们的射手｡
‫下一节课将讨论使用控制器､ 键盘和鼠标移动时所需的细微差别｡