Godot3で倉庫番系パズルゲームの開発
https://gyazo.com/3cff4abf5cb1fdd727db48f6ffeb711f
https://sparklewing.itch.io/push-tanishi-puzzle
/villagepump/イドバタニシを井戸に運ぶゲーム(倉庫番系パズル)
Godot Engine 3.4 で開発
ドット絵はAsepriteで制作
レベルデザインは倉庫番系ゲームのステージ作り方を少し参考にした
開発メモ
フォントは8×8 ドット日本語フォント「美咲フォント」を使用
Godot3で音量調整スライダー
Godot3.4でWindows向けにexportした.exeファイルを実行すると.pckファイルが見つからないエラーが出る
Godot3で change_scene 時のトランジションaddonを導入して使う
TileSetを作成し、ステージのタイルを配置した
https://gyazo.com/0dae1a1948c18c7ddfc0af1cd028000d
プレイヤーが通れないタイルにはコリジョンを設定した
https://gyazo.com/0fcc7e3498db704d5453537038e2e4ec
タイルを配置していく操作はやりやすかった
タイトルロゴはFontMemeで作成
Tweenを使ったが、Tweenは 4系で大幅に刷新されるらしいので、あまりメモらない
参考:https://zenn.dev/slm/articles/691aae1698ee68
https://zenn.dev/slm/articles/39d3bd54f98cb9
group機能を初めて使ったが便利だった
Unityでのtag機能
Objectがtanishi かどうか、player かどうかを簡単に判別する
metaデータ機能と合わせて、タニシが井戸上にいるかどうかを毎フレームチェックできる
code:check_tanishi_in_ido.py
for tanishi in get_tree().get_nodes_in_group("tanishi"):
tanishi_count += 1
if tanishi.has_meta("in_ido") == false:
continue
var in_ido:bool = tanishi.get_meta("in_ido")
if tanishi.get_meta("in_ido"):
tanishi_ok += 1
井戸川で、タニシがenterした時は metaをtrueに、eixt した時は meta を falseに設定している
CollisonObjectの enter/exit の signal判定処理は、Tweenを使うとややこしくなるので注意する
Tween移動を入れた途端、これで色々バグった
一瞬で判定が決まるわけではないし、出たり入ったりするケースや、同時に2箇所に触れるケースなどを考慮する
export構文はヒントや数値のインターバル、型制約などをつけると便利
GDScriptエクスポート — Godot Engine (stable)の日本語のドキュメント
フリーサウンド素材
参考動画:
https://www.youtube.com/watch?v=HmnwNadwHWI&t=1665s
シンプルな倉庫番のロジックについて解説しており、参考になった