ゲームプログラミングで避けて通れないのが、数学や物理の基礎知識です。しかし、それらの公式や法則を一から学ぼうとしても、目的であるゲームプログラミングとの関連性が見えにくく、応用しづらいという方も多いと思います。
本書では、動くサンプルのソースコードをもとにして、数学や物理学の知識がどのように生かされているか、その関連性にフォーカスして解説します。扱うテーマは2Dゲームプログラミングに必須といえる定番の処理を厳選。現役講師によるわかりやすく丁寧な解説で、苦手意識を持っている方でも無理なく読んでいただけます。学生からホビーユーザー、経験の浅いプロまで、幅広くお勧めできる一冊です。
1-1 物体を真横に動かしたい【等速直線運動、x += V;、v = -v;】
1-2 物体をキー入力で動かしたい【キー入力、斜め移動、ピタゴラスの定理】
1-3 物体を好きな方向に動かしたい【三角関数、サイン、コサン、ラジアン】
1-4 物体に重力を掛けたい【放物運動、重力加速度、計算誤差、積分】
1-5 物体をランダムに打ち上げたい【乱数、一様乱数、正規分布】
1-6 物体を円運動させたい【角速度、向心力】
1-7 [少し小難しい話]微分方程式とその数値解法【微分方程式、数値解法、オイラー法】
2-1 背景を端から端までスクロールしたい【カメラ位置、スクロール可能幅、比例関係】
2-2 キャラクタの動きに応じて背景をスクロールしたい【フィールド座標、画面座標】
2-3 マップチップを組み合わせたマップをスクロールしたい 【マップ、マップチップ、整数同士の割り算、シフト、論理演算】
2-4 かげろうのように揺らめくスクロールがしたい 【ラスタスクロール、サイン波、波長、振幅、周期】
2-5 遠近感の付いたスクロールがしたい【パース、比例計算、台形】
2-6 [少し小難しい話]遠近感(パース)の理論【視錐台、近似】
3-1 長方形同士が当たっているか調べたい【矩形、ド・モルガンの法則】
3-2 円形同士、円形と長方形が当たっているか調べたい【距離、ピタゴラスの定理、2 乗同士の比較】
3-3 細長い物体と円との当たり判定を取りたい【点と線分の距離、内積、微分】
3-4 扇形の物体との当たり判定を取りたい 【場合分け、ベクトルの一次結合、ベクトルの内分、円の方程式】
3-5 [少し小難しい話]3D 当たり判定のお話【2D、3D、次元拡張】
4-1 物体を好きな方向に向けたい(拡大縮小あり) 【回転、基底ベクトル、ベクトルの足し算・引き算】
4-2 好きな場所から好きな場所へと光線を飛ばしたい【ベクトルの長さ、単位ベクトル】
4-3 曲がった光線を表現したい【円形、円周の長さ、アーティファクト】
4-4 ホーミングレーザーを作りたい【左右判定、外積、旋回速度】
4-5 [少し小難しい話]大きく曲がった曲線表現の難しさ 【曲率、曲線の太さ、補間曲線、反射】
5-1 横方向に掃くように画面を切り替えたい【三角ポリゴン、テクスチャ、uv 座標】
5-2 斜め方向に画面を切り替えたい【ベクトル形式の直線、クリッピング】
5-3 境界線をぼかした画面切り替えをしたい【グラデーション、アルファブレンディング】
5-4 円形に画面を切り替えたい【重複描画回避、ドーナツ形、α値】
5-5 ワイパーのような動きで画面を切り替えたい【場合分け回避】
5-6 [少し小難しい話]様々な画面切り替えエフェクトの手法 【マスクパターン、プログラマブルシェーダ、Gaussianフィルタ】
6-1 比例と一次関数、直線の方程式【比例定数、傾き、切片、媒介変数表示】
6-2 式の展開と因数分解【計算の順序、分配法則】
6-3 二次関数、二次方程式と放物線・円【平方完成、解の公式、円錐曲線】
6-4 三角関数【直角三角形、単位円、ラジアン、位相】
6-5 ベクトルと行列【長さ、方向、一次変換、逆変換】
6-6 微分【変化率、微分係数、極限、合成関数】
6-7 級数と積分【数列、シグマ、原始関数、不定積分、積分定数】
付録1 サンプルプログラムのコンパイル・実行方法
付録2 参考ソースコード
付録3 参考文献