在上周实现了如何通过手柄来进行角色的瞬移,但是拿取手柄需要玩家反复的脱下和带上头盔,非常不方便。经过小组讨论之后,设想如下:通过头盔确定需要到达的位置,使用两个胳膊的碰撞来决定时候需要进行瞬移操作。
首先,将控制移动的位置移动到头盔上面,在should update facing direction方法中,将当前头盔的朝向和箭头的朝向做对比,返回一个bool值。
Make Rotator:第一个参数是左右旋转,第二个参数是最高点,第三个参数是偏离值;之后返回的是一个旋转体。
下面这个函数是进行抛物线与地面相交的判断:start Pos:表示起始位置,launch Velocity:表示发出射线的速度(包括方向),Object types数组表示,需要计算碰撞的类型。输出值返回了一个碰撞信息,需要通过break hit result方法获取想要的碰撞信息。
Break hit result方法:
是否发生了被拦截的碰撞是否是初次碰到表示指示起始时间和结束时间(0-1)从发出的地方到碰撞地方的长度碰撞发生的位置冲击点,随着碰撞物体表面变化的点碰撞点的法向和上面那个相同碰到的物理材质轨迹碰到的actor轨迹碰到的原始物体碰到的骨骼的名字碰到的最初项目的列表如果碰撞是三角面片和地形,返回索引值轨迹开始的方向轨迹结束的方向
因为不能移动到垂直平面上:
在nav上投射出玩家需要处于的位置
这里的输入point就接到前面输出的laocation上,之后返回一个映射得到的location,就是在nav网格上处于的位置。
图中绿色的区域就是navigation网格。