在DoTween中可以選擇do旋轉。但是旋轉模式分成四種,且又有DoLocalRotate和DoRotate的區別,所以在此記錄一下。
DoLocalRotate和DoRotate的區別在於,前者是基於自身當前旋轉度數的旋轉,如果游戲物體是UI,或者是某個物體的子物體,LocalRotation與Rotation的區別比較明顯(嘗試把父物體旋轉一些度數,可以看出區別)。而后者的旋轉是基於世界坐標系,測試方法和上述一樣。
DoTween有四種旋轉模式,分別是
1.RotateMode.LocalAxisAdd:先從字面分析,local和上述講的是一樣的,基於自身當前旋轉度數(localrotation)。add,是指在當前旋轉度數的基礎上增加endvalue的值。
2.RotateMode.WorldAxisAdd:直接分析world,是指相對於世界的旋轉,若endvalue的值是(0,0,10),意思是以世界的z軸為方向,增加10度的旋轉量。
3.RotateMode.Fast:DoTween中旋轉的默認模式,若無顯示的指明旋轉模式,那么此模式為當前旋轉模式。但是使用此方法旋轉,每次到了360就歸0了,可以直接將endvalue設置為370試試,物體只會旋轉10度。
4.RotateMode.FastBeyond360:超越360度,字面意思即可理解。同樣設置370度,物體真的會從當前的度數,旋轉到370度,且不會歸零。
DOPunchRotation這個方法能實現非常有趣的動畫效果,使用此方法,物體會以給定的punch值搖擺,最終會回到原始的旋轉度數。
OnValidate方法,是之前看見我主程在用,所以我嘗試了一下,並未深入研究,直到上次主程又訓了我一頓,今晚仔細測試了一遍。
Validate字面意思是生效,所以此方法會在腳本生效的時候調用,此外,也會在Inspector面板中修改此腳本的值時調用。之前對於此方法的誤解在於,我以為這個方法會一直調用,例如我在OnEnable中對同樣一個游戲物體修改了名字,但是OnValidate中也修改了名字。我以為OnValidate也會在游戲剛運行時調用,但事實不是。
OnValidate的運用場景十分豐富,對於目前的我來說,是非常有用的。例如上述fast旋轉時,我們也可以使用OnValidate實現此效果。直接rotation=rotation%360即可(忽略四元數等轉換)。倘若我們需要為一個游戲物體下所有子物體按照順序,從0開始排序,可以直接使用for循環,獲取transform.count,然后transform.getchild(0).name=i即可。OnValidate使用場景數不勝數,就不再贅述了。