大部分還是修bug跟優化操作的部分,操作的順暢度跟速度感差不多到可以請人玩玩看的程度了
所以下禮拜收尾一些最後的bug後要開始更新模型還有rig,粗估要在11月底之前做好,這樣12月開始把動態補上,順便學一下狀態機跟動畫藍圖
除掉的bug有以下幾個:
1.連續牆跳時,第二下會有距離變短的問題
2.偶爾牆跳會有Z軸位移消失的情形
3.跑牆耐力消耗完畢後,立即牆跳會被吸回牆面
4.牆跳、跑牆跳後角色迴轉過快
5.在地上衝刺時沒有CD時間,造成不停觸發
優化的部分:
1.懸崖自動上牆的順暢度與距離
2.衝刺改為直線,且結束後保持動勢移動
1.連續牆跳時,第二下會有距離變短的問題:
由於原本功能區最後的timeline接著delay,所以delay在連續跳躍的情形下依然會延遲觸發,造成第二次跑牆跳後才執行第一次跑牆跳結束時該重置的wall run jump input,間接導致角色input區沒有切換成wall run jump過程時該用的數值
Wall Run Jump區塊的最後要以branch+float的boolean判定取代delay
2.偶爾牆跳會有Z軸位移消失的情形:
Wall Run區塊的Stop Wall Run branch後有重置velocity的節點,由於角色跑牆跳功能最後會觸發至此,因此velocity不斷干擾跑牆跳加速度,必須新增一個branch判斷是否為跑牆跳途中,若正在跑牆跳則不重置velocity
3.跑牆耐力消耗完畢後,立即牆跳會被吸回牆面:
當wall run jump觸發後雖然會停止耐力計算,但wall run第一區塊的trace再次啟動,並持續play timeline計算耐力,因此在play之前新增branch判斷是否正在跑牆跳、牆跳,若是則無法play
4.牆跳、跑牆跳後角色迴轉過快
只要於input區塊的timeline後手動設定rotation rate的漸變,就能設定適合的旋轉速度
5.在地上衝刺時沒有CD時間,造成不停觸發
原本衝刺的重置條件有兩個,''落地後重置''和''瞬錨後重置'',但衝刺時movement mode會轉為fly,而fly模式下並不會被判定為falling,所以is falling的判定對原本的重置條件毫無影響,造成可以無限觸發的情形
所以必須將邏輯改為,角色距離地面多少便可以重置,如此便不會被is falling的條件綁死,在movement mode為fly的狀況下依然可以靠距離判定是否重置衝刺
1.懸崖自動上牆的順暢度與距離:
調整了角色距離牆多高時觸發的條件,而且稍微增加角色在觸發上牆後,漸變到懸崖邊的高度,如此才能launch角色時不至於被牆角擋住
另外也根據兩種不同的情況 - ''由下至上時''跟''上往下墜時'',設定不同的launch加速度,''由下至上''是較為賣力的動態,理所當然要飛得更高更遠,''上往下墜時''只是為了不讓玩家因為一點點操作失誤,導致從邊緣滑落,所以只需要勉強能踏回地面的速度即可
而判定是根據懸崖高度減去角色目前高度,只要大於某個值,那就代表角色是''上往下墜''的狀態,反之小於這個值則代表角色是''由下至上''
2.衝刺改為直線,且結束後保持動勢移動:
原本的邏輯是直接用launch character移動角色,但這樣會有Z軸的上下位移,所以必須改為timeline+set actor location的方式,強制設定角色位移方向,並用timeline裡面的curve設定適合的速度曲線
但稍微麻煩的部分是,timeline+set actor location的方式並不會反應在角色的加速度上,因此Z軸會不斷累加地心引力,造成衝刺過程不斷加大Z velocity,所以只能在衝刺時先切換成movement mode為fly,並藉由位移結束後加上launch character重置為falling
而launch的加速度也得根據角色目前的移動速度最大值進行動態調整,也就是走路時衝刺造成的最後飄移會比較輕微,跑步時衝刺造成的最後飄移會比較劇烈,而且衝刺時的值要額外加上一個基礎數值,才能明顯感覺到兩者速度的差別
值得一提的是,像是用timeline lerp數值的方式,一定要記得在timeline之前先取一個固定的基準值,否則在lerp的部分直接套用actor location或是forward vetor都是即時的數值,並沒有辦法達成A(固定數值)到B的狀況,而會變成A(浮動值)到B,不斷改變初始位置的bug
且direction的基準值,因為牆跳時角色rotation rate會延遲的關係,得額外計算角色的rotate乘上input,才能在角色牆跳旋轉緩慢的狀態下,依然朝著玩家希望的方向馬上衝刺
disable input跟set ignore move input
是完全不一樣的東西!!!!!
disable input會禁止所有輸入訊號,所有功能都會無法用,包括鏡頭旋轉
set ignore move input則是位移而已,其他功能都可以正常輸入
目前用下來,disable input應該是很少機會用上,畢竟鏡頭的旋轉不能鎖住,就算是功能觸發期間,玩家也要可以四處查看周圍才行