我目前正在學習 Godot,我的教科書似乎有點過時,因為它仍然使用已棄用的 AnimationTreePlayer。所以我不得不自己弄清楚AnimationTree。本課的練習討論了當玩家按下“向上”鍵時將轉換節點的 XFade 更改為隨機值,但我終其一生都無法弄清楚如何去做。我在檔案中看到 AnimationNodeTransition 有一個 set_cross_fade_time(value) 方法,但我該如何獲得它?我什至如何訪問腳本中的過渡節點?我已經嘗試過 $AnimationTree/Transition 和 $AnimationTree["parameters/Transition"] 之類的東西,但我嘗試過的都沒有。
我的腳本當前位于根節點上,節點樹如下所示:
- Sprite [腳本在這里]
- 影片播放器
- 影片樹
uj5u.com熱心網友回復:
讓我們說你有你AnimationTree的AnimationPlayer財產anim_player。而tree_rootof theAnimationTree是一個AnimationNodeBlendTree,其中 - 在其他節點中 - 你有一個AnimationNodeTransition.
如您所知,我們可以獲得 的一些“引數” AnimationTree,它們應該出現在 Inspector Panel 中。在那里你應該找到這個:
$AnimationTree.get("parameters/Transition/current")
"Transition"中的節點名稱在哪里AnimationNodeBlendTree。但是沒有引數xfade_time。
相反,我們將像這樣獲得AnimationTree(換句話說,AnimationNodeBlendTree)的根:
var blend_tree := $AnimationTree.tree_root as AnimationNodeBlendTree
然后我們可以得到這樣的節點:
var blend_tree := $AnimationTree.tree_root as AnimationNodeBlendTree
var node := blend_tree.get("nodes/NodeName/node")
順便說一句,如果您更改"/node"為,"/position"您會在編輯器上獲得一個Vector2節點的位置。
所以,假設我們想要一個名為“Transition”的節點,它是我們的AnimationNodeTransition. 我們這樣做:
var blend_tree := $AnimationTree.tree_root as AnimationNodeBlendTree
var transition := blend_tree.get("nodes/Transition/node") as AnimationNodeTransition
最后我們可以訪問xfade_time. 設定一個你說的隨機值?這應該這樣做:
var blend_tree := $AnimationTree.tree_root as AnimationNodeBlendTree
var transition := blend_tree.get("nodes/Transition/node") as AnimationNodeTransition
transition.xfade_time = rand_range(0.0, 120.0)
或單行:
$AnimationTree.tree_root.get("nodes/Transition/node").xfade_time = rand_range(0.0, 120.0)
Be aware that the value of xfade_time is the number of seconds for the transition. So setting 120 give you a two minutes transition.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436220.html
