ゲームエンジンGodot4.0で3Dスマホゲームを作りたいと思いますが、その前にお勉強しています。
2023/3/1にstable版がリリースされました。
Godot_v4.0-stable_win64.exe.zipを使用しています。
目的
その29で大きな球を作ってその内側に青空のテクスチャを貼って空にしましたが、本来はWorldEnvironmentを使用するようですので、変更します。
ベースプロジェクト
下記で作成したプロジェクトをベースに機能追加をします。
github(Godotのプロジェクトマネージャーからインポートして利用できます)
https://github.com/footinglow/Godot4/tree/main/02_study/S31WallTexture
※別途ダウンロードが必要です。
res://assets/texture/godot-material-dpa-1.0.1/Readme.txt及び
res://assets/texture/AllSkyFree1.0/Readme.txtを参照
大きな球の青空ノードとスクリプトを削除する
StageItemsの中のres://StageItems/ground.tscnを開きます。
シーン内のBackgroundSkyを右クリックして「ノードを削除」を実行します。
res://StageItems/BackgroundSky.gdを右クリックして、「削除」を実行します。
WorldEnvironmentを追加する。
res://StageItems/ground.tscnのルートノードGroundを右クリックして、子ノードを追加からWorldEnvironmentを作成します。
WorldEnvironmentを選択した状態で、インスペクタのWorldEnvironment/Environmentの右の<空>をクリックして、新規Environmentを実行します。
設定された「Environment」をクリックして詳細設定を開きます。
Background/Modeを「Sky」に変更します。
Skyに変更すると、「Sky」項目が表示されるので、開きます。
Sky/Skyの右の<空>をクリックして「新規Sky」を選択します。
Skyの右に設定された「Sky」をクリックして詳細設定を開きます
Sky Materialの右の<空>をクリックして、「新規PanoramaSkyMaterial」を選択します。
Sky Materialに設定されたPanoramaSkyMaterialをクリックして詳細を開きます。
Panoramaの右の<空>をクリックして、「クイックロード」を実行します。
「res://assets/texture/AllSkyFree1.0/Epic_BlueSunset_EquiRect_flat.png」を開きます。
背景に空が設定されました。
背景を青空にしたいので、上下逆にします。
Environment/Sky/Rotation/xを-180°に設定します。
WorldEnvironmentの青空を回転する
スクリプトで回転を実装します。
WorldEnvironmentを右クリックして、スクリプトをアタッチを実行します。
StageItemsフォルダに保存されました。
下記のようにスクリプトを修正します。
WorldEnvironmentはNode3Dを親としてもっていません。
インスペクタのWorldEnvironment/Environment/Sky/Rotationがあるので、Rotation/yを操作して回転します。
extends WorldEnvironment
@export var m_d_speed_degps = 1.0 # 回転速度 [degree/sec]
func _process(delta):
get_environment().sky_rotation.y += deg_to_rad(m_d_speed_degps * delta)
-
get_environment().sky_rotation.y
これでRotation.yにアクセスできるようです。
environment.sky_rotation.yでもよさそうです。 -
deg_to_rad(m_d_speed_degps * delta)
単位がRadianのようですので、DegreeをRadianに変換します。
実行
実行します。
青空の雲が球の内側に貼りつけたときより自然な感じがします。
以上