RPGの原型みたいなものを作ってみました。真ん中の主人公が動くだけですが
「いいね!」 2
次は擬似3DMAPを歩く奴をやってみたいと思います。
「いいね!」 3
苦労してタイルを配置したんですけどこのTexture RegionとTile Sizeが見事にマッチしてないとタイルがうまく配置できないみたい。
PNGファイルも一定間隔でないとタイルとして認識させるのがすごく難しい。
ここで結構苦労しそう。
「いいね!」 2
Godotの公式のチュートリアルは今のところGodot3の書き方で書かれているらしい
それをGodot4でチュートリアルをやるときに参考になりそうな記事
「いいね!」 1
32X32でもとからきちんと配置されたPNGファイルで横32X縦16にするとブロックがうまく収まるだけど2回に1回の割合で配置順がおかしくなる。
X軸方向はちゃんと配置されるんだけどY軸方向が半分しかまともに配置されないのよな
うーん。
「いいね!」 2
「いいね!」 2
上の画像の位置から左にいくと下の画像の位置に行き着く。
多分キャラが歩くグリッドがタイル配置されてるグリッドと何か違うふうに構成されてるんだと思うけど、こういう3Dっぽいのは3軸で位置定義してそこにいろいろはめてく使用じゃないと難しいな。
さて、どこがおかしいのやら。位置マスずつ歩くのはできました。
「いいね!」 1
ちょっと試しにマグマブロックでX32Y32で試してみたらちゃんとうごきました。
左端から右端までがちゃんと同じ行になる。
ブロックをY16にしてるから表示がまともになるんだけど、動きがおかしくなる。困ったもんだ。
うーん。どうすればいいんだろう。
「いいね!」 2
よし、やっとメインの方も直った。次はすり抜け・移動判定か。
しかしゲーム製作はファイルの保持が難しいいつの間にか変なところの設定変わってて動かなくなったりする。
後AIの画像作成もそろそろ活用したいところ上記の画像も左上と左下のアニメしかない。
「いいね!」 2
FPSが低すぎて移動SPEEDが早すぎると移動が素早く終わってしまってAnimeが再生されないことがある。
「いいね!」 2
Godotでの実装ポイント
TileMap
- TileSetでマップの見た目とCollisionを設定
- ただし、SRPGは衝突物理エンジンに頼らず自前で通行判定をすることが多い
ユニット
Node2D
やCharacterBody2D
などを使い、グリッド座標と画面座標を分けて管理- 移動処理は自分で制御し、通行可能かの判定を自作
- A*アルゴリズムはGodotに内蔵されているか、独自実装する
なるほど、確かに移動マスが離散なので移動ロジック作って制御した方がいいって事ね。
SRPGの障害判定はどうするか?
1. 自分で歩行可能タイルの判定ロジックを書く
- TileMapのタイルIDや専用の2D配列で歩行可能/不可を管理
- 移動しようとするマスが歩行可能かチェックして動きを許可・拒否
2. 経路探索を使う
- Godotは
Navigation2D
ノードを持つが、これは多角形ナビメッシュ用でグリッドベースとは違う - グリッド用の経路探索は自作が多い(A*アルゴリズムの実装が代表的)
- 外部ライブラリやGitHubで公開されているA*実装も活用できる
これは意外と難儀そうだ。
「いいね!」 2
今日は障害判定を作ろうとしてたんだけど作っているうちに調べてるとmap editorを実装してそこに障害判定の情報も入れて移動プログラムを組み込んだ方が良さそうだな。ということでmap editorをつくってみよう。
「いいね!」 2