在上週實現瞭如何通過手柄來進行角色的瞬移,但是拿取手柄需要玩家反覆的脫下和帶上頭盔,非常不方便。經過小組討論之後,設想如下:通過頭盔確定需要到達的位置,使用兩個胳膊的碰撞來決定時候需要進行瞬移操作。
首先,將控制移動的位置移動到頭盔上面,在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網格。