(个人)VR实时交互的太极拳学习系统创新实训第六周(1)
在上周实现了如何通过手柄来进行角色的瞬移,但是拿取手柄需要玩家反复的脱下和带上头盔,非常不方便。经过小组讨论之后,设想如下:通过头盔确定需要到达的位置,使用两个胳膊的碰撞来决定时候需要进行瞬移操作。
首先,将控制移动的位置移动到头盔上面,在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网格。