0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

 ゲームエンジン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を開きます。
スクリーンショット (490).png
 シーン内のBackgroundSkyを右クリックして「ノードを削除」を実行します。
 res://StageItems/BackgroundSky.gdを右クリックして、「削除」を実行します。
 スクリーンショット (491).png

WorldEnvironmentを追加する。

 res://StageItems/ground.tscnのルートノードGroundを右クリックして、子ノードを追加からWorldEnvironmentを作成します。
スクリーンショット (492).png
 WorldEnvironmentを選択した状態で、インスペクタのWorldEnvironment/Environmentの右の<空>をクリックして、新規Environmentを実行します。
スクリーンショット (493).png
 設定された「Environment」をクリックして詳細設定を開きます。
 Background/Modeを「Sky」に変更します。
スクリーンショット (494).png
 Skyに変更すると、「Sky」項目が表示されるので、開きます。
 Sky/Skyの右の<空>をクリックして「新規Sky」を選択します。
スクリーンショット (495).png
 Skyの右に設定された「Sky」をクリックして詳細設定を開きます
 Sky Materialの右の<空>をクリックして、「新規PanoramaSkyMaterial」を選択します。
スクリーンショット (497).png
 Sky Materialに設定されたPanoramaSkyMaterialをクリックして詳細を開きます。
 Panoramaの右の<空>をクリックして、「クイックロード」を実行します。
スクリーンショット (501).png
 「res://assets/texture/AllSkyFree1.0/Epic_BlueSunset_EquiRect_flat.png」を開きます。
スクリーンショット (500).png
 背景に空が設定されました。

スクリーンショット (503).png

 背景を青空にしたいので、上下逆にします。
 Environment/Sky/Rotation/xを-180°に設定します。
スクリーンショット (506).png

WorldEnvironmentの青空を回転する

 スクリプトで回転を実装します。
 WorldEnvironmentを右クリックして、スクリプトをアタッチを実行します。
 スクリーンショット (507).png
 StageItemsフォルダに保存されました。
スクリーンショット (508).png
 下記のようにスクリプトを修正します。
 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に変換します。

実行

 実行します。
 青空の雲が球の内側に貼りつけたときより自然な感じがします。
 スクリーンショット (510).png

以上

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?