影片略
因為還是練出其實能跑很遠,但總是會一直違規的狗頭人哨兵
決定研究到底都什麼地方在違規
結果發現是感覺完全沒有違規的RootUp一直在違規
然後才發現
Vector3 leanDir = rootAimRot * flatTargetVelocity;
這個完全是錯的,因為rootAimRot 是相對旋轉量,但卻沒有根據flatTargetVelocity的絕對方向變化到底為啥當初會覺得可以用成這樣
Vector3 flatNormal = flatTargetVelocity.normalized;Quaternion flatCoord = Quaternion.LookRotation(flatNormal, Vector3.up);Vector3 leanDir = flatCoord * rootAimRot * Vector3.forward;
這樣才是對的
這比之前沒有移除武器重心的悲劇更悲劇
也就是說目前以來其實上半身和軀幹的引導,都是亂引導一通
但還是大概有效果是因為
當面向很接近旋轉量0,角度引導會接近理想值,因此可以順利訓練
當面向不接近旋轉量0的其他情況,因為引導向量變的莫名其妙,所以紅蓮人偶會被迅速Force Sharping淘汰
總之,明明獎勵亂七八糟,但ML竟然還是大致實現對動作的引導,現在看來可以說是奇蹟
然後先前的追逐實驗都變得很白癡,一堆假說,雖然也未必有錯,但結果可能就只是有Bug
總而言之學到教訓了,我之後都會乖乖寫工具,把該畫的東西畫出來確認
然後其實前面實驗都幾乎白費工夫也沒關係,只要真的能解決問題達到更高的境界就好
但真的還是超白癡,以後ML感覺在擺爛,我還是多確認一下是不是我搞出Bug好了