ETH官方钱包

前往
大廳
主題

道爾追逐 1

夏洛爾 | 2022-10-19 12:38:39 | 巴幣 2 | 人氣 130


Doyle Chase V1
實驗目標: 進入靜立狀態後,進入追逐狀態,在追逐狀態下,要能持續跑至接近目標的距離內
實驗設計:
1.任何弱點觸地皆失敗 (尾巴和劍並非弱點)
2.
targetSmoothPosition = targetPositionBuffer.GetSmoothVal();headDir = targetSmoothPosition - stageBase.InverseTransformPoint(doyleHeadRb.position);rootDir = targetSmoothPosition - stageBase.InverseTransformPoint(doyleRootRb.position);flatTargetVelocity = rootDir;flatTargetVelocity.y = 0f;targetDistance = flatTargetVelocity.magnitude;lookAngle = Mathf.InverseLerp(180f, 0f, Vector3.Angle(doyleHead.up, headDir));upAngle = Mathf.InverseLerp(180f, 0f, Vector3.Angle(doyleHead.right * -1f, Vector3.up));aimVelocity = flatTargetVelocity.normalized;aimVelocity.y = 0.2f;avgVelocity = velocityBuffer.GetSmoothVal();velocityAngle = Vector3.Angle(avgVelocity, aimVelocity);velocityAngleCoef = Mathf.InverseLerp(180f, 0f, velocityAngle);flatVelocity = avgVelocity;flatVelocity.y = 0f;flatVelocityManitude = flatVelocity.magnitude;velocityCoef = Mathf.InverseLerp(0f, 10f, Vector3.Project(avgVelocity, aimVelocity).magnitude );flatVelocityAngle = Vector3.Angle(flatVelocity, flatTargetVelocity);if(!inferenceMode){if(targetDistance > nearModeRange){if(Time.fixedTime - landingMoment > landingBufferTime){bool outSpeed = flatVelocityManitude < Mathf.Lerp(0f, 7f, (Time.fixedTime - landingMoment - landingBufferTime)/4f);bool outDirection = flatVelocityAngle > Mathf.Lerp(180f, 10f, (Time.fixedTime - landingMoment - landingBufferTime)/4f);if( outSpeed || outDirection ){AddReward(-1f);if(outSpeed){judge.outSpeed++;}if(outDirection){judge.outDirection++;}judge.Reset();return;}}lastReward = velocityAngleCoef * velocityCoef * 0.007f + lookAngle * upAngle * 0.003f;totalReward += lastReward;AddReward( lastReward );}// else if(targetDistance > 1.5f)else{// AddReward(1f);judge.survived++;judge.Reset();return;}}

//大致來說,獎勵視線,並獎勵投影至"跑動推薦向量"的速度和角度,並使用Force Sharping
3.End episode on maximum of 20s

實驗結果:
結果顯示為成功,驗證了幾個實驗項目
1.持有武器還是能跑動的
2.有尾巴是能跑動的

但是問題有
1.座標區域化系統在限定條件會錯誤處理CoordBase方向計算,忘了進行逆算道爾的Scale處理,以致在距離接近時,Coordbase方向會異常
導致目前練出來的道爾,在近距離會變阿呆,包含已修正CoordBase方向計算後也是

追逐模型是原定就要繼續推進,然而起身和靜立可能也需要重練,但由於只會在距離4.5M內發生異常,因此起身和靜立預計會在體力制研究完成後才重練

2.轉彎能力很弱
可能部分受上述問題影響,然而目前道爾在追逐時,轉彎能力極弱,不像紅蓮模型不知為何可以大拐彎,後續實驗預計讓作為目標的水月,在起始階段也會被打飛

3.跑法很不帥氣
原本就預定進行體力制研究時,同時引導道爾以類似火影跑的動作奔跑,然而目前看來道爾毫無疑問有個問題--"他很高大",所以雖然看起來動作很慢,但他已經是以 10m/s 這種在VR內肉眼會看不清楚的速度在奔跑

所以這個問題有點困擾,如果引導他用看起來很迅捷的動作跑,大概就真的會快到玩家,也就是我只能被虐,但如果保持在適當速度,也就是8m/s左右,大概他就會用這種像散步的感覺前進

恩...不過由於是在VR,因此不會俯視他,所以大概實際接近速度才會是主觀速度感受,而由於戰鬥才是主軸,所以就還是先不要在意看起來在散步的問題好了

因此後續研究計畫為
1.進行以體力制系統優化動作的研究,並引導動作為前傾+雙臂展開跑
2.當體力制研究成功,將讓水月公主起使會被打飛並因此會大幅移動,研究是否能讓道爾在追逐成果上更靈活


//附註: CoordBase異常引導出一個改良點,當前道爾在起身模型也會在意目標方向,導致當試圖起身時,目標若持續移動會拖延甚至重置起身流程,若進行重練時,可以考慮將起身定位為僅進入站立瞬間,而方位瞄準同樣是靜立模型的獎勵係數,讓靜立模型去完成主要的方位瞄準動作,或是兩者的訓練都要讓水月會機率性被打飛

不過我很喜歡紅蓮那種被打飛,會看著玩家受身的感覺,這樣很帥很挑釁,不過目前看起來因為有那把無法放開的劍道爾在起身會不太靈活,尤其那把劍常常卡在他自己的腦袋上,期待他練出有泛用性的帥氣受身目前感覺不太實際

但是劍可以掉在地上,他在自己過去撿起來,我覺得要練這個會有點麻煩,不太適合在目前想趕上有趣的日子的狀態下嘗試

創作回應

更多創作