转载一个TopDown控制器的实现方法

[复制链接]
查看2804 | 回复0 | 2017-9-28 00:10:45 | 显示全部楼层 |阅读模式
转猫大博客:https://ericsong.org/2017/09/2369.html
大家晚上好,今天带来的是针对在上一节中那个控制器的详细操作逻辑说明。废话就不多说了,上一个小节文章最后我放出了控制器源文件,直接看代码。

上面的代码是从右侧摇杆的2个输入轴,一个X一个Y,发送到右侧的一个自定义事件,事件带有XY两个接收端,左侧的两个输入,在项目设置,Input的Axis里自己添加。

然后上面的自定义事件,又传入Stick Rotator ALL的自定义事件中。

Stick Rotator ALL发送的,则是真正控制右侧摇杆的一个旋转逻辑,首先先看红色圈的。因为平面的摇杆是一个Yaw的XY移动,所以XY Make为一个向量,然后获取当前Actor的位置,两个向量一加,接入Find Look At Rotation节点的目标节点,开始输入则接入获取当前Actor的位置,这个Find Look At Rotation我画了一个图,大家可以这么理解,他返回的是一个旋转值,我就说他是一个角度信息吧,看下图:

首先Find Look At Rotation的Start是如图我们玩家的位置,粉色箭头代表当前玩家的朝向,蓝色点,则是我们Find Look At Rotation节点的Target的位置,所以这个Find Look At Rotation节点返回的角度,就是绿色色O,那么有的人可能不理解了,为什么当前角色的位置+一个摇杆的输入,就是Target的位置了呢,是这样,我们继续看下图:

黄色是我们的右侧摇杆,那么现在摇杆的位置是左上角,然后结合我们另一个图,我们Find Look At Rotation的目标点,永远等于(实时计算)从角色当前的位置+右侧摇杆现在推向的位置。所以上面Find Look At Rotation节点的Target连接的是角色当前位置向量+右侧摇杆输入的向量。(用一个土话来讲,角色位置相对于他的坐标来说,始终为000,然后摇杆的位置为左上角,那么就是当前角色位置+摇杆位置的Yaw向量,就是当前Target的位置,换句更简单的话讲,Find Look At Rotation的Start好理解,Target也可以这么理解,就是说,从角色当前位置开始向上,然后右侧摇杆推向的位置开始画角度所以就产生了像上图O那个角度)。
好了我们红色圈里面的就说完了,接下来说右边的从右侧摇杆输入轴,向量取长度,然后大于0.09(其实就是如果输入不等于0的话),然后Is Covered设为True,也就是说当前右侧摇杆有输入啦。然后如果为True,分支执行True,也就是后面出发自定义的Covered事件。如果为False,也就是如果右侧摇杆没有输入,则获取控制器的Actor旋转值,传入Face Rotation变量。
忘了说一个节点,就是我们看到Find Look at Rotation后面还有个Lerp的节点,简单来说下,这东西就是可以让你从A平滑过渡到B,怎么理解,首先Find Look at Rotation返回的就是一个正常的旋转值了,而下面获取当前Actor的旋转值其实2个传的值是一样的,只不过说,如果加入一个Lerp,加入A的一个值是80,B也是80,如果没有平滑过渡,那么如果A和B变成100,A会直接一瞬间跳过去,如果有Lerp,则A会根据下面Alpha平滑过渡到B的值。
传入Lerp后,下面我们有一个自定义事件是RotateNow,然后将Lerp后的值传入了Face Rotation变量。
先来说下这个Face Rotation,他这个变量右上角有2个球,用比较好理解的话来讲,就是这个变量是一个RepNotify,当我更新时候,他会创建一个函数同时执行函数并更新里面的值。我们选择RepNotify的时候,双击它,就会产生一个OnRep的函数,我们在这个函数里添加Set角色旋转的功能,如下图所示:

我们上面看到在Branch有一个Covered和一个Not Covered,也就是一个代表右边摇杆输入了一个没输入,如果输入的话执行下面的事件:

这个很好理解,如果右侧有输入,执行这个事件,将角色蓝图里的Orient Rotation To Movement关掉,使用角色Yaw控制旋转,然后执行RotateNow的事件,这个事件是Lerp后的那个事件,也就是实时更新FaceRotation的以及更新函数。
如果右侧摇杆没有输入,则执行下面的事件:

这个和上面一样就是开启了Orient Rotation To Movement关闭了使用Yaw为旋转的控制。
Orient Rotation To Movement的意思是如果开启,角色会根据当前的方位朝向自动进行旋转。而关闭后,只能使用右侧摇杆控制Yaw的输入来控制朝向。

评分

参与人数 2能量币 +30 收起 理由
空白的灵魂 + 20
EZ倪 + 10 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

6

主题

0

回帖

22

积分

初始化成员

积分
22