【Godot 4.0】スマホ３Dゲームを作るための勉強　その３２　WorldEnvironmentで青空を設定する

　ゲームエンジンGodot4.0で3Dスマホゲームを作りたいと思いますが、その前にお勉強しています。
　2023/3/1にstable版がリリースされました。
　Godot_v4.0-stable_win64.exe.zipを使用しています。

# 目的
　その２９で大きな球を作ってその内側に青空のテクスチャを貼って空にしましたが、本来はWorldEnvironmentを使用するようですので、変更します。

# ベースプロジェクト
　下記で作成したプロジェクトをベースに機能追加をします。

https://qiita.com/FootInGlow/items/f4ae34c28984a37ed534

　
　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を開きます。
![スクリーンショット (490).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/1c6dd018-ebf5-006e-bb69-3fdeed83bd56.png)
　シーン内のBackgroundSkyを右クリックして「ノードを削除」を実行します。
　res://StageItems/BackgroundSky.gdを右クリックして、「削除」を実行します。
　![スクリーンショット (491).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/0892ea03-f845-de36-5d27-2d36794b5c6d.png)

# WorldEnvironmentを追加する。
　res://StageItems/ground.tscnのルートノードGroundを右クリックして、子ノードを追加からWorldEnvironmentを作成します。
![スクリーンショット (492).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/b9584453-65af-db66-bdfe-82d2a5e51db1.png)
　WorldEnvironmentを選択した状態で、インスペクタのWorldEnvironment/Environmentの右の＜空＞をクリックして、新規Environmentを実行します。
![スクリーンショット (493).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/0e06d740-10ce-91b9-0970-316fe2cd9533.png)
　設定された「Environment」をクリックして詳細設定を開きます。
　Background/Modeを「Sky」に変更します。
![スクリーンショット (494).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/bd952144-8a2b-6228-c88d-3b489feb9351.png)
　Skyに変更すると、「Sky」項目が表示されるので、開きます。
　Sky/Skyの右の＜空＞をクリックして「新規Sky」を選択します。
![スクリーンショット (495).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/2fdd4efd-33ea-b9ea-89a5-7e2558ed8f21.png)
　Skyの右に設定された「Sky」をクリックして詳細設定を開きます
　Sky Materialの右の＜空＞をクリックして、「新規PanoramaSkyMaterial」を選択します。
![スクリーンショット (497).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/746c96db-7d7c-92a3-1977-9cde29725239.png)
　Sky Materialに設定されたPanoramaSkyMaterialをクリックして詳細を開きます。
　Panoramaの右の＜空＞をクリックして、「クイックロード」を実行します。
![スクリーンショット (501).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/04d046f0-4994-3cd1-c52c-834327a39352.png)
　「res://assets/texture/AllSkyFree1.0/Epic_BlueSunset_EquiRect_flat.png」を開きます。
![スクリーンショット (500).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/459b0ec5-dfb2-a1b5-8e7c-695c4c1c1162.png)
　背景に空が設定されました。

![スクリーンショット (503).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/770a1ea6-b3b1-e7ca-0f92-8244e9d94c2f.png)

　背景を青空にしたいので、上下逆にします。
　Environment/Sky/Rotation/xを-180°に設定します。
![スクリーンショット (506).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/e8c2123e-58cd-c5f2-7961-c389c443c018.png)

# WorldEnvironmentの青空を回転する
　スクリプトで回転を実装します。
　WorldEnvironmentを右クリックして、スクリプトをアタッチを実行します。
　![スクリーンショット (507).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/4157cae2-2ef1-1f77-c473-2c23147657f8.png)
　StageItemsフォルダに保存されました。
![スクリーンショット (508).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/99561f62-9f13-155f-6af9-265992ddec45.png)
　下記のようにスクリプトを修正します。
　WorldEnvironmentはNode3Dを親としてもっていません。
　インスペクタのWorldEnvironment/Environment/Sky/Rotationがあるので、Rotation/yを操作して回転します。
```GDScript
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に変換します。

# 実行
　実行します。
　青空の雲が球の内側に貼りつけたときより自然な感じがします。
　![スクリーンショット (510).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/44dddb97-854e-3586-e305-a07885f0a9e6.png)

以上