2020/11/18(水) [n年前の日記]
#2 [godot] Godot Engineで背景の3Dモデルデータをインポート
Godot Engine 3.2.3 x64 を使って3D表示の簡単なシューティングゲームっぽいものを作る。
今回は、背景についてもモデルデータを差し替えてみる。
今回は、背景についてもモデルデータを差し替えてみる。
◎ モデルデータをエクスポート。 :
blender で背景モデルを作成して glTF 2.0 でエクスポート。モデルデータは以下。CC0 / Public Domain ってことで。
_bg_type_c_20201109.zip (スクリーンショット内で使ってた版)
_bg_type_c_take3_20201111.zip (再作成版。大きさや構成を変更してある)
アニメーションを含んでないモデルデータなので、glTF 2.0 でエクスポートすれば問題は起きにくいはず。
Godot Engine にインポートして開いてみる。表示された。bg_type_c.tscn というファイル名でシーンとして保存。
_bg_type_c_20201109.zip (スクリーンショット内で使ってた版)
_bg_type_c_take3_20201111.zip (再作成版。大きさや構成を変更してある)
アニメーションを含んでないモデルデータなので、glTF 2.0 でエクスポートすれば問題は起きにくいはず。
Godot Engine にインポートして開いてみる。表示された。bg_type_c.tscn というファイル名でシーンとして保存。
◎ Bgシーンに読み込んでみる。 :
Bgシーン、res://assets/Bg.tscn を開いて、インスタンスを追加。bg_type_c.tscn を開く。今まで使っていた仮モデルは非表示にするか削除する。
BgModel の下に配置して、右クリック → 複製で数を増やして、比較的広大な(?)シーンにした。
Mainシーンを開いてみる。反映されている。
BgModel の下に配置して、右クリック → 複製で数を増やして、比較的広大な(?)シーンにした。
Mainシーンを開いてみる。反映されている。
◎ Bgシーンの動かし方を変えてみる。 :
Bgシーンは BgModel を動かすことで背景がスクロール(?)しているように見せかけているけれど、z軸方向に動いてるだけで面白みがないような気がしてきた。x軸方向にもずらしたり、z軸で回転させたりして、動きに色気(?)をつけてみる。
res://scripts/Bg.gd を修正。内容は以下。
_Bg.gd
res://scripts/Bg.gd を修正。内容は以下。
_Bg.gd
extends Spatial export var scroll_speed = 120 export var limit_z = 80 export var add_z = -80 export var angle_add = 20 export var x_shift_range = 80 export var rotz_range = 10 var angle = 0 func _ready(): pass # Replace with function body. func _process(delta): angle += (angle_add * delta) if angle > 360.0: angle -= 360.0 var rz = rotz_range * sin(deg2rad(sin(deg2rad(-angle)))) $BgModel.rotation.z = rz $BgModel.translation.x = x_shift_range * sin(deg2rad(angle)) $BgModel.translation.z += scroll_speed * delta if $BgModel.translation.z >= limit_z: $BgModel.translation.z += add_z
◎ 敵が弾を撃つ処理も修正。 :
ついでに、敵が弾を撃つ際の処理も若干修正。res://scripts/EnemyZako.gd を修正。
_EnemyZako.gd
_EnemyZako.gd
# ... func _on_ShotTimer_timeout(): var angle_add = 12 var angle = 90 - angle_add * 3 var spd = 0.2 for i in range(7): _shot(translation, angle, spd) if hp <= hpmax * 0.7: _shot(translation, angle, spd * 0.8) if hp <= hpmax * 0.3: _shot(translation, angle, spd * 1.2) _shot(translation, angle, spd * 1.1) _shot(translation, angle, spd * 0.9) angle += angle_add # ...
- 敵のHPに応じて、発射する弾の数を変えている。
◎ 動作確認。 :
Mainシーンを開いてF6キーを押して動作確認。
それらしい画面になってきた。
次回はサウンドを追加してみる。
それらしい画面になってきた。
次回はサウンドを追加してみる。
[ ツッコむ ]
以上です。