![](https://js.huke88.com/assets/revision/images/Loading.gif)
那么接下来我们让这个角色 ,产生一个前后左右的移动 ,这边输入信息已经获取过来了 ,然后接下来我大致说一下 ,这个东西怎么走 ,那获取 ,首先我们要获取一下这个玩家的控制器 ,也就是这个手柄,就手柄的位置 ,手柄位置在哪儿 ,就是在这个位置,底下这个位置 ,也就是这个位置 ,它的底盘的这个位置 ,我们画这个线,底盘这个位置 ,然后我们获取过来了以后 ,我们还需要获取一下什么 ,获取一下它往前的一个方向 ,还有它往右的一个方向 ,然后我们获取到了它的这个输入信息 ,就是0和1,有-1 ,然后我们如果是1的话 ,我们就让它往前推 ,往这个方向推 ,然后如果-1的话我就往后推 ,所以就是干这个事儿 ,那么基本上就是这样的一个原理 ,这边怎么实现 ,我给大家说一下 ,首先我们需要操作的是谁 ,是这个角色的组件,角色移动 ,所以把这个东西拽出来 ,然后我们对它增加一个Add ,增加一个什么呢 ,我们添加一个输入 ,add就是添加 ,或者你可以直接打添加 ,添加也可以,添加一个什么 ,添加一个输入向量 ,这里有一个组件 ,pawn移动的一个东西 ,添加输入向量 ,这个东西就可以让这个组件进行移动 ,我们移动的是组件 ,不是整个的角色,需要注意一下 ,因为这个组件可以带动整个角色移动 ,所以说我们挪的是这个组件 ,
但实际上这个组件挪的是整个的角色 ,我们挪的实际就是整个角色 ,只不过是通过组件去挪的 ,大家要知道这个东西是它的发动机 ,这个东西是发动机 ,这个东西是它的摄像机 ,这个东西是它的角色 ,摄像机的目标等等 ,这个是角色体 ,这个是箭头等等 ,你可以去获取过来 ,获取这个角色移动组件 ,然后进行一个增加它的向量就可以了 ,然后我们再说一下 ,我们现在需要往这个位置 ,这是一个世界矢量 ,世界矢量是什么东西 ,我顺便解释一下 ,那么我们可以看到这三个轴 ,你看这三个轴就是一个矢量 ,这东西就是一个矢量 ,也就是说 ,世界上每一个点都是一个矢量 ,每一个坐标轴都是一个矢量 ,那么坐标轴由三个轴构成 ,xyz也就是代表这边这三个轴 ,你可以看到xyz三个轴 ,然后这个坐标轴可以点右键给它分割开 ,可以看到世界矢量X ,世界矢量Y,世界矢量Z,点右键 ,还可以进行一个重新组合 ,那么它实际就是一个偏移量 ,就是我们得先知道这个位置点是多少 ,然后我们去加上一个值 ,加上一个前后的量 ,然后传回到它这个位置信息 ,我们就可以设置它的位置了 ,不就对吗 ,对了吗 ,那么我们怎么能获取这个 ,这个角色的那个 ,它的一个位置 ,也就是它的控制器的位置 ,我们这边去搜索一下控 ,获取一下它的控制器先 ,我们获取一下它的控制器 ,我这边找一下获取 ,
获取玩家控制器这个东西 ,我们获取到玩家的控制器 ,这个玩家的控制器 ,我们再拽出来 ,它里面就会得到一个信息 ,我们要它里面的那个方向 ,也就是Get它一个F,向前 ,我们搜索一个向前 ,我们可以看到 ,这边玩家控制器获取出来了 ,然后通过玩家控制器 ,我们可以得到这个actor,actor是什么 ,就是这个角色向前的一个向量 ,然后我们还可以得到 ,它的向右的一个向量 ,向右 ,角色向右的一个向量 ,你看,我可以获取这两个东西 ,这两个东西是什么意思 ,我大致给大家说一下 ,也就是这个角色 ,它得到它这个原始的控制器 ,也就是上面这个手柄了 ,获取过来了以后 ,我们通过这两个节点 ,可以把它向前的一个向量得到 ,也就是它这个方向的一个量得到 ,然后还得到一个向右的方向的量 ,这样的话我们就得到两个向量 ,这两个向量长什么样 ,我们可以进行一个打印实际上 ,打印一下字符串 ,把这个比如说先前的这个量 ,我给打印出来 ,然后我们播一下 ,可以看到左边这个位置 ,就已经列出来了 ,是100这样的一个值 ,然后也就是当前 ,这个角色的一个位置 ,如果我挪动它这个位置了 ,挪动这个位置 ,我们再打印一下,100 ,它这个方向就是这个角色方向 ,
如果我进行旋转了 ,我把这个角色旋转一下 ,我们再播放一下 ,这个值就会有所变化 ,你看,有所变化 ,比如说它指的是一个方向 ,它这个方向 ,大概就是这个箭头的方向看 ,就这箭头的方向 ,就是它得到的这个向量 ,然后它这个向量得到了以后 ,怎么能传到这里面去 ,我们可以先传进去,先不用管 ,先不用考虑这个怎么传,我们先播一下 ,你看会有什么效果 ,我们发现这个角色一直往前走了 ,那么我们就知道了这个 ,添加个输入向量的作用 ,是干什么的了 ,这个大家就知道了,这块 ,我们如果想断开的话 ,摁Alt加左键就可以断开 ,我们大致知道了这个往 ,如果我这个位置写1的话 ,就相当于往左移动,我们播一下 ,它就是往这个左方向移动 ,那么如果我要写-1的话 ,它就往右移动看,往右移动 ,如果我这个位置写0的话 ,它肯定就是不移动 ,就是这个意思 ,反过来如果是向前的话 ,Y轴我如果1的话它就往前移动 ,但是它这个是世界坐标系的 ,是世界坐标系的 ,就是说我们获取它向前这个量 ,直接拽到这儿 ,它就以当前这个角色的这个箭头 ,这个箭头,往它自身坐标系 ,就相当于这个自身坐标系 ,进行前后的移动 ,这是世界坐标系 ,这是自身坐标系 ,这里是有所区别的 ,所以这个一定要注意一下 ,行了,然后往这边移动,移动多少值 ,我们这边可以跟,它这个之前我说了 ,这是0和-1之间 ,
我们拿这个值 ,跟这边这个值做一个乘法 ,乘什么值,乘一个浮点值 ,我们这边改成一个 ,float浮点值 ,然后传到这里,这不就行了 ,这个值我们要给它转换一下 ,它这个有点不方便 ,我们可以转换成float ,这个是单精度的 ,这个是double双精度的 ,那么相对来说肯定双精度更牛一些 ,它们两个差16位差不多 ,这个是16位的 ,这个就是32位,就差不多 ,就是这个意思 ,我们改成双精度也可以 ,直接传过去就行了 ,那么这时候我们再来播一下 ,我按前按后,你可以看到 ,是不是就可以进行移动了 ,这样是不是就对了 ,比如说我往这个方向,我转过来 ,然后我进行前后的一个移动 ,你看,也是好使的 ,就说明我现在可以操作它前后了 ,但是有点慢 ,调出来速度有点慢 ,但是确实是移动,移动速度 ,回头我再说,这边已经移动了 ,然后那么往左右 ,也是这个东西 ,复制的一个方法就行了 ,我们把这个Ctrl+C ,Ctrl+V一份 ,然后这边我们就需要 ,获取它向右的量 ,然后去乘一下它这边的这个 ,去乘一下这个值去 ,
课程反馈
收到你的反馈,我们将提供更好体验给你
![](https://pic.huke88.com/career/capterSmallCover/2020-07-31/66C5CB9E-0945-9072-128F-CD8BD8EAE8F0.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-07-31/66C5CB9E-0945-9072-128F-CD8BD8EAE8F0.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-10-30/356F853C-4DA4-32AF-0B04-78842DAAE7E8.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-10-30/356F853C-4DA4-32AF-0B04-78842DAAE7E8.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-11-19/26405237-AC64-0296-1638-2AAB09B08195.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-11-19/26405237-AC64-0296-1638-2AAB09B08195.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-06-24/494BC186-A13A-B8A7-CC82-3C13F333CC88.png)
![](https://pic.huke88.com/career/capterSmallCover/2020-06-24/494BC186-A13A-B8A7-CC82-3C13F333CC88.png)
![](https://pic.huke88.com/career/capterSmallCover/2019-07-26/4695783E-8DE6-B5B6-8BB9-D33C370D2321.png)
![](https://pic.huke88.com/career/capterSmallCover/2019-07-26/4695783E-8DE6-B5B6-8BB9-D33C370D2321.png)