2Dアクションゲームの坂道判定について
2Dゲームを作るにあたり、頭を悩ませることになるのが坂道の実装である。坂の形状との交差判定自体は別に何も難しくない。 坂を滑らかに登ったり下りたりできるような挙動の実装が難しいのである。
坂道のない、矩形のブロックのみの衝突判定については別の記事で詳述しているので、まずはそちらを読んで欲しい。 (リンク) この記事で解説した「座標軸別移動衝突法」をベースに説明する。
>>|
2Dゲームを作るにあたり、頭を悩ませることになるのが坂道の実装である。坂の形状との交差判定自体は別に何も難しくない。 坂を滑らかに登ったり下りたりできるような挙動の実装が難しいのである。
坂道のない、矩形のブロックのみの衝突判定については別の記事で詳述しているので、まずはそちらを読んで欲しい。 (リンク) この記事で解説した「座標軸別移動衝突法」をベースに説明する。
近年ではゲームエンジンの普及により、いたく立派な物理エンジンが気軽に使われるようになって久しい。しかし主人公が着地したとか壁にぶつかっただとかの判定は、長い間それぞれのゲーム開発者が自分の手でちょちょいと実装してきたもののはずではなかったか。
そのような自作は今も有力な選択肢であることは間違いない。また、プログラミングの入門としても恰好の題材であるように思われる。
一方で実際のところ、その実装についてネットで調べてみると悩みの声も多く目につく。思うに、実装にどんなバリエーションがあってどこさえ外さなければいいのかとか、そういうところが整理されていないのである。
この記事では最もシンプルで実装が楽な方法を紹介する。誰も名前を付けている人が居ないので、仮に「座標軸別移動衝突法」と呼ぶことにした。
C++で開発をしていると時折悩むのが、「関数を受け取る場合どのように受け取り保持するか」という問題だ。C++にはこれに対する解が3つほどある。 悩むというのは実現できなくて悩むのではなく、どれを使って実現するかを悩むのである。
std::function
で受け取る。この記事はConoHa Advent Calender 2023 14日目の記事です。
あのConoHaがGPUを提供し始めたらしいともっぱらの噂。 GPUをC++で直接殴る話を書いている人間としては聞き捨てならないので早速申し込んで使ってみました。
近頃の若者はGPUと言えばPythonだ、NumPyだ、CUDAだ、などと言うばかりで嘆かわしい限り。ここはひとつ、OSやGPUベンダに依存しないC/C++向け低レイヤ開発APIたるVulkanで触ってみなければなりません。
本当に原因究明がだるかったので残しておきたい。
そもそもAndroid NDK上でvcpkgを使う方法についてもネット上に情報が少ないので解説しておきたいところだが、それはこの記事では一旦置いておく。
注: このページの記述は2023/10/28時点の情報です。今後openal-softのバージョン更新に従って情報は古くなる可能性があるためご注意ください。
テキストエディタ然りペイントツール然り、何かしらのデータや作品の編集ソフトを利用するならそこに「Ctrl+Z」の存在を期待してしまうのは現代人の性である。 その手のツールを実用的に開発するならば、やはり「元に戻す」を真面目に実装することを迫られよう。
最近実際にそういう実装をやってみたことがあったので、そこで得られたアンドゥ・リドゥ実装の知見を書き留めておく。