Godot3でシンプルなスロットゲーム
Godot Engine3系のGrid containerを触っていたら3x3のスロットっぽくなったので、その勢いでシンプルなスロットゲームを作ってみた。
https://gyazo.com/744084980722f684b52972a5dc8fffe3
HBoxContainerとVBoxContainerを組み合わせたらUIの配置は便利だと分かった
ただ、TextureRectのサイズを変えるとレイアウトが崩れるので、そこがよく分からなかった。
GodotEngineでの複数解像度・アスペクト比対応のアセットに対する方針がまだよく分かってないので、後で調べる
演出のための遅延処理は create_timer で簡単に実装できて便利だった
Godot 3.5: yieldを用いたX秒後の遅延実行処理
yield(get_tree().create_timer(0.01), "timeout")
回転中のスロット絵柄の切り替えに使っている
「SPINボタンが押されたらスロット回す」はシグナルを使ってボタンから接続する
How to Use Godot's Signals
Sound周りは、Godot3でサウンド再生 + GodotでメインBGMの再生をSingletonのシーンで実行する で簡単に実装できる
code:audio.py
extends Node2D
var main_bgm = preload("res://Sound/BGM.ogg")
var se_spin = preload("res://Sound/SE_Spin.ogg")
var se_hit = preload("res://Sound/SE_Hit.ogg")
var se_miss = preload("res://Sound/SE_Miss.ogg")
onready var bgm_player = $BGMPlayer
onready var se_player = $SEPlayer
func play_bgm(id:String) -> void:
if bgm_player.playing:
bgm_player.stop()
match id:
"main_bgm":
bgm_player.stream = main_bgm
bgm_player.play()
func play_sound(id:String) -> void:
se_player.stop()
match id:
"se_spin":
se_player.stream = se_spin
"se_hit":
se_player.stream = se_hit
"se_miss":
se_player.stream = se_miss
se_player.play()