久しぶりにGodot Engineを調べています。
解説動画の通りに進めてもうまくいかない箇所があり、備忘録として残しました。
1. UnityのGameObject.Find相当を使って、任意のノードを取得したい
Godot Engineでは、Unityでいうオブジェクトはノードと呼びます。あるノードにアタッチしたスクリプトから、別のノードの内容を呼び出したい、というのはよくあることと思います。
Unityでは例えばGameObject.Findによって実現できますが、Godot Engineで相当する関数はすぐには見つかりませんでした。
最終的に、この辺りの情報をもとにして組み立てました。
例を挙げて説明します。以下のように、Worldというルートノードがあり、その中の子ノードとしてCoin000があるとします。
SophiaSkinというノードにアタッチしたスクリプトの中で、Coin000の情報を取得します。
そのとき、SophiaSkinのスクリプトでこのように書くと、Coin000の情報を取得できます。
var WorldNode = get_tree().get_root().get_child(0) #Worldノードを取得する var Coin000 = WorldNode.get_node("Coin000") # Worldノードの中にあるCoin000を取得する
2. シーン実行しても灰色で何も表示されない
こちらの動画を参考にして、キャラクターを追加する手順を再現していたのですが、なぜかシーン実行しても真っ暗でした。
ただし、これは完全に私の見落としでして、Camera3Dをつけるのを忘れていただけです。動画の4:03付近で「カメラをつけないと見えないから」と説明されています。
同じ悩みの投稿がフォーラムにあり、こちらで解決できました。
3. おわりに
色々調べてみると、2Dゲームを作る方法はある程度情報が出るのですが、3Dゲームを作るための情報があまり見つけられませんでした。
ひとまず、3Dキャラクターを表示させて移動、特定の対象物と衝突したら消すという処理まで作ってみました。
次回はこの辺の実現方法をもう少し詳しく書きたいと思います。