修改
這邊希望讓角色在移動/攻擊/施法前要先面向目標,目標在11.5°或以內才開始行動。
先把navmeshagent 的updateRotation = false,再另外用程式碼控制角色轉身,期望做到需要角色轉身時才讓他轉身
這邊使用RotateTowards[1]控制轉身速率,
然後在Update或Coroutine中執行,讓角色尋路時在面向目標大於11.5°時會先停下來轉身
另外agent的Auto repath要=false才能做到路徑中斷時會停下來,不會因路徑重新連接而繼續走下去(Ex:陷阱門)
重新用drawio畫一畫MoveOnly的流程圖
以下影片中展示了按住滑鼠左鍵時每0.2s就命令角色移動到目標地點及agent的Auto Repath的影響
跳躍/衝鋒/傳送
(這裏僅測試Navmesh agent和位移的互動)
在agent控制gameobject的情況下,這邊使用warp[2]控制角色的位移。
基本上跳躍/衝鋒/傳送都是直接設置角色的位置,把衝鋒想像成連續的傳送,而跳躍就是衝鋒再加上高度的控制。
在YouTube 找了一個教用unity制作Dota2小小投擲技能的影片,跟著做再修改一下
在跳躍和衝鋒過程中還要一直檢查有沒有障礙物擋住,比如在劫盗地圖中角色用躍擊跳到一半時關門了就要重新設定角色的落地位置之類。
在專案中新增一個Layer為"block",應用於建築物/空氣牆的Layer。
例如"迴旋之刃"就要用NavMesh.Raycast找路徑上的邊界
而"躍擊"就要用Physics.Raycast找路徑上的有沒有建築物擋住,有的話就再找邊界之類。
試一下大概就是下面影片的情況,
下次就到遠程&近戰普通攻擊測試
Good luck, Exiles.
Ref: