CYBER SHOOTER 360

・開発時期

2021年12月

・開発言語・開発環境

開発言語:C++

開発環境:Visual Studio 2019

・使用ライブラリ

DXライブラリ

・開発期間

2ヵ月

・作品紹介

このゲームは、ステージに出現する様々な種類の敵をプレイヤーが3つの武器を使用して倒しスコアを競うゲームです。

プレイヤーはASWDキーで上下左右に自機を動かし、マウスで弾を飛ばす方向を決め、マウスの左ボタンで弾を発射、マウスホイールでプレイヤーの使用武器の変更ができます。

ゲームには様々なモードがありざっくりと分けて
制限時間関係なくプレイヤーの残機が無くなるまでどれだけの敵を倒せるか競うモード、制限時間内にプレイヤーの残機関係なくどれだけの敵を倒せるか競うモード、
制限時間も残機も関係ない自由なモードの3種類あります。

・こちらからダウンロードできます

・使用した技術

CSVによる地形の生成
CSVを使用してステージの地形を生成しました。
CSVを使用することで簡単に地形を設定することができ、プログラム内のコードで指定する必要が無く地形の変更がとても楽だったです。

C++の継承
C++の継承を使用することで敵や弾、画面切り替えの動きのバリエーションを出すことができました・
敵や弾などの大きなカテゴリの中の種類一つ一つのクラスに同じ変数を持たせる必要が無く、継承先のクラスに新しく必要な変数を持たせることができるのでコードが冗長にならずに済みました。

円と四角形の当たり判定
ステージの地形と弾・プレイヤー・敵との当たり判定に使用しています。
内部のプログラム的には四角形の傾きに合わせて円の座標を四角形の中心を軸に回すことで、四角形が傾いていたとしても円との当たり判定を正常にとれるようにしました。
傾いた四角形と円の当たり判定を使用することはありませんでしたがこのような考え方もあるということに気づけたことはすごく大きかったです。

・苦労したこと

地形の壁に苦戦しました。地形を単体のブロックで制作した結果、プレイヤーの弾(反射する青弾)や敵がブロックとブロックの間に吸い込まれてしまい壁抜けが頻発してしまうという事態に見舞われました。そこで地形のブロックの壁を向ける方向毎に種類(上・下・左・右・左上角・左下角・右上角・右下角)を多くしブロックごとに当たった時の反応を設定しました。その結果、壁抜けを大幅に減らすことに成功しました。