プロジェクト32
強制横スクロールのジャンプアクションゲームを作ってみた。 pic.twitter.com/XiTrAclq9H— toburau (@toburau) 2026年4月4日 強制横スクロールのジャンプアクションゲームが完成。 今回はコリジョンやアイテム取得の判定部分に苦労した。 勉強のために自分で…
フリー素材のサイトからいくつかダウンロードして、サウンドを付けた。 対応しているフォーマットが分からなかったが、とりあえず、mp3 をロードして再生してみたところ、再生できた。 これで一通りの要素は入ったかな。
ゲームオーバー時の挙動が正しく行われていなかったので修正。 これでタイトル画面からゲームプレイ、ゲームオーバーになってタイトル画面に戻るという一連のシーケンスが実装できた。 あとは、サウンドが一切無いので、次はサウンド付け。
キャラクターのパーツを回転してスケーリングする機能で位置がズレてしまうので、 回転中心が違うのだろうと調べてみたら、単純に表示座標が間違っていただけだった。 座標を本来の位置に修正して、期待通りの動きとなった。
キャラクターのパーツを回転してスケーリングする機能を追加。 しかし、スケーリングはうまくいったのだが、回転中心が間違っているようで、位置がズレてしまう。 座標系がどのようになっているか見直さないと。
プレイヤーがステージから落下してゲームオーバーになったとき、そのままプレイヤーが画面上に固定されて残ったままになっていたので修正。 スクロールする床に運ばれていってしまうのは出来たけど、やられたときのアセットは無かったので、せめて横にしよう…
コインを取得したときに得点を加算するように。さらにプレイ中に現在の得点も表示するようにした。 これでだいぶゲームの要素は入ったかな。
プレイヤーがコインを取得できる範囲の判定を修正。 少し幅を持たせた範囲でチェックするようにした。 だいぶ違和感なくコインを取れるようになったが、ときどき、すり抜けたように感じられる場面もある。でも今回の対応はここまでにしておこう。
ステージに配置したコインを取得できるように。 キャラクターのマップ上の位置とコインの位置が一致したときに取れるようにしたら、ジャンプしてかすったときなど、一瞬重なったように見えても取得できない場合が気になった。 ということで、キャラクターの…
ローカルLLMをセットアップしたので、今書いているコードをレビューしてもらった。 いろいろな項目を挙げられて、総合評価と改善点は以下の通り。 総合評価 このコードはゲームの基本的な機能は実装されていますが、保守性や拡張性の観点から大幅なリファク…
ランダムでアイテムのコインを表示。 ランダムなので取れない位置にも出てしまうが、今回は良しとしよう。
ステージの下側はトゲにして、足場から落ちてトゲに触れるとゲームオーバーになるようにした。 プレイヤーが何に触れたか判定できる処理を追加したので、得点アップのコインを追加予定。
足場のグラフィックを変更。 今までは床と同じパーツを使っていたが、別のパーツに変更。さらに両端も変更することに。 当たり判定でパーツ番号を参照していたので、そちらも変更。 いろいろと変更しなくてはならないことが多く、思ったよりも手間がかかって…
いろいろと書き殴ったり、テストに使っていたコードを整頓。 ちゃんとクラスを設計していなかったり、変数もグローバルで使いまわしたりしていて、とても人に見せられない書き方。 C++でコードを書くときよりも、JavaScriptで書いているためなのか分からない…
プレイヤーのジャンプ出来る高さに合わせて、足場の位置を調整。ジャンプで届かない高さの位置には生成しないように変更。 とりあえず、これで移動する足場にジャンプしていくという部分はほぼ出来た。 実験用のコードや古いコードが残ったままで見にくいも…
プレイヤーの足場となるオブジェクトの生成。 完全にランダムから、足場としての長さを一定範囲のランダムにして、位置もランダムに。足場同士の間もランダムで少し空けるようにした。 ランダムよりはだいぶ良い感じにはなったけど、プレイヤーが移動できな…
プレイヤーのコリジョンが正しく動いているようなので、ステージ上の足場となるオブジェクトの作成。 今はテスト用で完全にランダムでステージに配置しているけど、これではゲームにならないわけで。 プレイヤーのジャンプで届く高さとか、足場自体の長さな…
画面端のコリジョン処理を見直し。 移動制限とコリジョン制限の判定順番が良くないことが分かった。 判定順番を修正して、やっと期待通りの動きになった。
プレイヤーが画面端にいるときにカクつく動きがあったので修正した。 ところが、テストしていたら、画面端に障害物のオブジェクトがあったときに、カクつく場合があるのが判明。 そこで、修正していたところ、画面端でオブジェクトにジャンプで乗ると画面端…
ステージがスクロールしているときに、プレイヤーが壁に向かって移動していると、カクついたり、ジャンプすると場合によっては壁にめり込んでしまう場合があった。 プレイヤーの入力がある場合、ジャンプしているときなど、いろいろな条件で判定を試したが、…
プレイヤーがオブジェクトにめり込まないように移動を制限している部分が、ステージが停止しているときは問題ないのだが、ステージが動いているときはちょっとズレが定期的に出てきてカクつくように見えてしまう。 スクロールしているときの座標の取得が間違…
今回は強制スクロールのステージにしようとしているので、床に乗っているときはプレイヤーも一緒に動かないといけないことをすっかり忘れていた。 ということで、接地しているときはスクロールする分だけプレイヤーも移動させるようにした。 この考え方でい…
プレイヤーのジャンプの挙動を実装。 とりあえず、ジャンプして床に着地や、空中のブロックに乗ったり出来るようになった。 スピードとかジャンプ力はあとで調整する予定。 パラメータを直値でコードに書いてしまったので、あとで簡単に調整できるように変数…
プレイヤーの移動時にステージのオブジェクトとのコリジョン判定を行い、オブジェクトにめり込まないようにした。 ただ、今回は強制スクロールすることも考えていて、その場合は、ステージのオブジェクトの移動で、プレイヤーを押す処理が必要となる。 うー…
当たり判定を修正。 やっぱり、スクロールしたときに参照するマップデータの位置がズレていた。 いろいろ動かして試してみたが、今のところは問題なく当たり判定が正しく行われているようだ。 今は当たったかどうか判定するだけなので、次は当たったときの処…
プレイヤーをデバッグ移動させてコリジョンチェックしていたら、当たらない場合があることに気がついた。 プレイヤーの四隅で当たっているかチェックしているのだが、マップのチップの1個のサイズがプレイヤーよりも小さくて、プレイヤーの中に入った場合に…
当たり判定をチェックするために、プレイヤーを自由に移動できるようにデバッグ移動の機能を追加。 さらに対象となるステージのオブジェクトをデバッグ描画で可視化。 チェックしてみたら、正しいオブジェクトを参照している場合と、していない場合がある。 …
プレイヤーの当たり判定用の座標をデバッグ表示で見ながら調整。 あと、プレイヤーの基準となる座標をどうするか悩む。キャラの中心か、それとも足元の中心か。とりあえず、今回はキャラの中心を基準としてみた。
プレイヤーと地形の当たり判定を実装する前に、座標が正しいか確認しやすいように、デバッグ描画の機能を追加。 効率よくチェックするには、ビジュアルで分かるようにしておかないと。
プレイヤーキャラクターの移動を実装。 左右キーで向きを変えて移動。さらに移動している間はアニメーションとしてテクスチャを切り替えるようにもした。 当たり判定はまだ付いていないので、空中を歩いている状態。