← 一覧に戻る
議論 フォーラム

GDevelopでブロック配置ゲームの有効な移動判定を実装

GDevelopのコミュニティフォーラムに、ブロック配置ゲーム開発者から寄せられた「プレイヤーに有効な移動があるかどうかを判定する方法」についての質問が掲載されていました。

開発中のゲームでは、8x8のボード上にブロックをドラッグ&ドロップで配置していきます。各ブロックはカスタム衝突判定を持ち、ボードは色が変わる64個のタイルマップで構成されています。プレイヤーが受け取るピースはランダムです。

問題となったのは、プレイヤーがピースをボードに配置する際に、それが有効な移動かどうかを判定するロジックです。有効な移動とは、以下の条件を満たす場合を指します。

  • ピースがボードからはみ出さない
  • ピースが他の色のブロックと衝突しない

例えば、テトリスのような形状のピースを配置する際に、他のピースと重なってしまったり、ボード外に配置されたりすると無効な移動となります。

無効な移動例(ボードからはみ出し)
無効な移動例(ボードからはみ出し)

この課題に対し、フォーラムでは「For each Object」イベントと、より高度な機能の組み合わせによる解決策が提示されました。

具体的には、全てのブロックを一度に処理するアプローチが有効だったようです。この方法により、ピースの配置が有効かどうか、衝突やボード外への配置がないかを正確にチェックできるようになり、有効な移動がない場合には「Lost」変数をtrueに設定するロジックが実装可能になります。

ゲーム画面の例
ゲーム画面の例

この解決策は、同様のブロック配置ロジックを持つゲーム開発者にとって、有効な移動判定の実装における貴重な参考情報となるでしょう。

元の情報源を見る →