ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

プロジェクト17

ステージのコリジョン更新

ステージのコリジョンを実装。 天井と床に当たり判定を付け、プレイヤーがヒットすることを確認。 また、当たり判定の範囲を矩形で描画するようにしたので、どこにコリジョンがあるのかも分かりやすくなった。

配列を返す

当たり判定の処理をどう書こうかとJavaScriptでの値の渡し方や返し方をChat GPTに聞いていたら、 挙げてくれたサンプルコードでJavaScriptでは配列を返せることを知った。 もしかすると忘れていただけかもしれないが。 実際にChat GPTが出してくれたサンプル…

当たり判定変更

今までは当たり判定を点と矩形で行っていたのだが、それを矩形と矩形同士の当たり判定に変更。 実装後、チェックで正しく判定出来ていないと思ったら、判定自体は正しかったけど、 デバッグ用に表示していた当たり判定の矩形の描画座標がずれていただけだっ…

ステージ作成

ステージを作成中。 とりあえず、外周部分の実装。 さらにプレイヤーとの当たり判定をどうするかで悩み中。

Javascriptの色

k-ichikawa.blog.enjoy.jp サンプルのコードを見ていて、色の指定に white とか red とか書かれているのを見て、このライブラリ用の定義かと思っていたら、Javascript で用意されていものだった。 一覧を見てみたら、思った以上に多くて140色用意されていた…

ステージサイズ

プレイヤーの動きばかり考えていて、ステージをどうするか、ぼんやりとしてしか考えていなかった。 とりあえず、矩形を並べてみようとしたら、思ったように綺麗に並ばない。 そもそも、縦横どのくらいのサイズにするかも考えていなかった。 ということで、ま…

名前空間

Javascriptで名前空間を使ってプレイヤークラスとステージクラスを作成するようにした。 実際のコードは次のような感じ。myGame という名前空間を作成し、そこにプレイヤーとステージのクラスを定義した。 とりあえず、これで定義名が被らずに実行できるよう…

ステージ作成

ステージの作成開始。 インスタンス名を bg にしようとしたらエラー。すでにライブラリで使われていた。 ということで、今度は stage に変えたら、またエラー。こちらも使われていた。 ここは、ちゃんと名前空間を設定しないと。 ということで、JavaScript …

コリジョン実装

プレイヤーのコリジョンを実装。 描画部分を一部変更して、コリジョン用のデータを用意するようにした。 これで思ったよりも簡単に実装できた。 チェックしてみて正しく動作していそう。

プレイヤーのコリジョン

プレイヤーのコリジョンの実装を開始。 単純に円や矩形で判定できる形状ではないので、描画と同じく、これまたやっかい。 コリジョンを可視化するデバッグ機能も準備したほうが良さそうだ。

プレイヤー実装

プレイヤーの動きをやっと想定したとおりに実装出来た。 まずはパラメータを一番シンプルな状態にして、コードのいろいろなところにログ出力を入れて、1ステップずつ確認しながら修正していった。 考え方は間違っていなかったけど、ループ回数やインデックス…

ちらつき

引き続き、プレイヤーの移動とそれに合わせた表示。 期待通りに動いたと思ったら、ときどき、ちらつくのが見えた。1ステップずつ動かしてみたところ、表示が消える場合があり、それがちらつく原因だった。 やっぱりまだどこかで座標計算などでミスっているよ…

console.log

プレイヤーの表示の仕組みをちょっと作り直し中。 デバッグ中、値の変化を知りたくなったので、いわゆる printf デバッグをしようと、JavaScript でのコンソール出力って何だっけと検索したところ、console.log が出てきた。 で、その検索結果が表示されたと…

描画順

プレイヤーの動きの部分の実装中。 座標計算の部分は出来たけれども描画するところで苦戦中。 使っている描画のメソッドには優先度の設定が無いようで、後ろから手前の順番で描画しなくてはならない。 開発環境にまだ慣れていないということもあって、なかな…

開発環境

プレイヤーの挙動のアルゴリズムを変更中。 しかし、Javascriptの開発環境に慣れていないので苦戦中。 いつも使っているC++でVisual Studioなら、デバッガの使い方にも慣れているので、自分の知りたい情報がすぐに分かる。 今はVisual Studio Codeで開発して…

リスト、キュー、配列

プレイヤーの動きのアルゴリズムを思いついたので実装中。 リストかキューを使えば簡単に実装できるかなと思ったら、JavaScriptにはリストやキューが無かった。なので、Arrayを使って実装することに。 意外とSTLのものを使うようになっていたんだなと実感。

動きの実装

プレイヤーの動きの実装。 これでいけると思ったアルゴリズムを実装してみたら、うまくいかないことが判明。また作り直さねば。 JavaScriptで書いているとついメンバ変数でthisを付けるのを忘れてエラーになってしまう。ビルドするわけでないから実行してみ…

プレイヤー移動

プレイヤーをキー入力で移動できるようにした。 前回のテストコードを書き直して、ちゃんとキャラクターサイズや移動スピードといったパラメータも変更しやすくした。 使っているライブラリではスマホ対応でタッチ操作も取得できるようになっているが、今回…

プレイヤークラス

プレイヤークラスを作成。 JavaScriptでクラスを書くのはほぼ初めてなので、検索しながら書いてみた。 C++と違うところはあるけれど、そんなに違和感無く書けそうな感じ。 とりあえず、キャラを矩形で出して動かしてみたところ。

メインループ

サンプルコードを変更して、メインループを作成。 タイトル、ゲームメイン、ゲームオーバーのシーケンスを用意。 まだ素材も用意していないので、表示しているのはテキストだけ。 Visual Studio Code での GitHub 連携も問題なく出来ている。 まずはプレイヤ…

VSCodeでGitリポジトリ設定

Visual Studio CodeでGitHubのリポジトリを扱えるように設定した。 これでVSCodeだけでGitHubとのやりとりが出来るようになった。 ただ、今まで使っていたツールやコマンドとちょっと違うので、まだちょっと手間取る。まあ、そのうち慣れるだろうけど。

環境構築

せっかくなので、今回は Visual Studio Code と GitHub を連携し、ほぼ Visual Studio Code 上でいろいろやっていこうと思う。 ということで、GitHub にリポジトリを作成して、Clone。 拡張機能の Git Lens を入れてあるので、Visual Studio Code 上でいろい…

シューティングの章読了

本のシューティングの章を読み終わった。 シューティングは何回か作ったことがあったので、まったく理解できないという部分は無く、ほぼ復習と、そういう手もあったかという確認となった。 ということで、今のサンプルを改造しながら、いまふわっと考えてい…

シーン遷移と背景

本でシーンの遷移と背景の演出についての部分を読む。 シーンの表現はC++ならシーンクラスにして実装するところだけど、本では変数で分岐。 背景の演出はラインの太さを変えたりしてうまく立体感を出していた。シンプルながらうまいやり方だと思った。

パワーアップ

本でパワーアップシステムについての説明を読む。 説明とコードを読んでやっとパワーアップの効果が分かった。実際のゲームならユーザーに分かりやすく見せることが重要だろう。 どんなアイテムを取ったかの判定は表示している画像で判定しているのが意外だ…

敵の移動とライフのアルゴリズム

本を読んで、シューティングの敵について学ぶ。 サンプルで実行したとき、敵の移動が良い感じだなと思っていて、どう実装しているのかなとコードを見てみたら、非常にシンプルな計算式で出来ていた。 自分のイメージする移動から、こういった計算式が導き出…

エフェクト

本でエフェクトについて学ぶ。 エフェクトアニメーションはテクスチャの表示する部分を切り替えて実現していた。 爆発パターンを並べたテクスチャをよく見る。 一定の速度で切り替えるならシンプルにコードを書けそうだが、途中で速度変えるのはちょっと手間…

やられと無敵時間

本でやられたときのダメージ処理と無敵時間の処理について学ぶ。 自分は難しく考えすぎており、思った以上にシンプルな実装で十分だった。

JavaScriptでクラス

本を読みながら、ヒットチェックとそれによりオブジェクトを消す仕組みを学ぶ。 この辺は基本的に理解しているので、ほぼ復習という感じ。 考え方は問題ないのだけれども、サンプルコードがJavaScriptでクラスを使っていないので、いろいろと面倒。 オブジェ…

バグ?

良い感じのアセットが見つからなかったので、とりあえず、四角で実装して、グラフィックは後回しにすることに。 サンプルを実行して動作を確認していたところ、一瞬意図しないグラフィックが見えた。 最初よく分からず、いろいろ試していって、やっと原因が…