Sirius X

需要無視の自己満足ブログです。

自作ロックマンを作りたい – rev.002

Category:Rockman Reanimated, ゲーム開発 Comment:0

ちょっと忘れるとすぐ放置状態になる自分のブログ😂
置き去りに。

自作ロックマンの進捗については、私のTwitter IDの呟きでもこそこそと作ってます的な事を言ってはいるのですが、やはり具体的な状況を記載しない事には進捗報告にならないだろう、という事で書きます。

前回の報告1ヶ月半以上も経過してしまいましたが、とりあえず順番に実装を行っております。

DXライブラリを使用しているので、ロードやグラフィックの書き出しは簡単です。

まだ接触判定の一部しか実装出来てません💦
激遅…(´・ω・`)

とりあえず、クラスの利用、構造体の利用、ファイル分割、モジュール化単位の設計などを交えながら慎重に進めている感じですかね。

石橋を叩いて渡る、的な。

まあ趣味だし、のんびり作るのがモットーですから
(とはいいつつも10年以上完成してないのは流石にね)

一旦、コントローラの十字キーでロックマンを縦横無尽に移動させて、灰色の部分に達すると「壁」としては入れないように制御する部分まで実装。

struct BgAttributes2D1Front {
    bool enable;    // 有効化フラグ
    int top[2];     // 上段の座標値
    int middle[2];  // 中段の座標値
    int bottom[2];  // 下段の座標値
};

struct BgAttribute2D1Center {
    bool enable;    // 有効化フラグ
    int top[2];     // 上段の座標値
    int middle[2];  // 中段の座標値
    int bottom[2];  // 下段の座標値
};

struct BgAttribute2D1Rear {
    bool enable;    // 有効化フラグ
    int top[2];     // 上段の座標値
    int middle[2];  // 中段の座標値
    int bottom[2];  // 下段の座標値
};

struct BgAttribute2D1Ceil {
    bool enable;    // 有効化フラグ
    int front[2];   // 前方の座標値
    int center[2];  // 中央の座標値
    int back[2];    // 後方の座標値
};

struct BgAttribute2D1Floor {
    bool enable;    // 有効化フラグ
    int front[2];   // 前方の座標値
    int center[2];  // 中央の座標値
    int back[2];    // 後方の座標値
};

/* 
 * オブジェクトの接触判定用のプッシュポイントセット
 */
struct BgAttribute2D1Mixed {
    short int direction;            // プレイヤーの進行方向
    BgAttributes2D1Front front;     // プレイヤーの進行方向前方の当たり判定ポイントセット
    BgAttribute2D1Center center;    // プレイヤーの進行方向中央の当たり判定ポイントセット
    BgAttribute2D1Rear rear;        // プレイヤーの進行方向後方の当たり判定ポイントセット
    BgAttribute2D1Ceil ceil;        // プレイヤーの進行方向天井の当たり判定ポイントセット
    BgAttribute2D1Floor floor;      // プレイヤーの進行方向床面の当たり判定ポイントセット
};

急にCのソースなんですけど、プレイヤーの接触判定ポイントを構造体にして、これをさらに構造体のメンバにする事で対応しています。

プレイヤーの前方、胴体中心、後方、天面、底面それぞれに対応した構造体をメンバに含む構造体。
これに座標値を格納して使います。

front . center . rear、top . middle . bottomのそれぞれは2つずつ変数を所持して、X/Y座標です。

3点である理由は、このゲームが8bitスタイルである事と、一区画のブロックが16×16になっているためで、プレイヤーがそのブロックを判定ポイントの間をすり抜けないためです。

具体的には以下の画像の通りで、

茶色の四角枠が3つあるうち真ん中の1つを取り去ってしまうと、
ロックマンがブロックの中央に立った時ブロックを貫通してしまう事になります。

これがまずいので3点取っています。

こういった事は私が考え出したものではなく、
あくまで原作の仕様を観察して得たものです。

あまり言いたくない事なのですが💦

当プロジェクトは、8bitのロックマンが好きで、
ただそれだけで開発している企画です。

全ソースコード(Visual Studio C++で開発しています)はブログ上部のGitHubリンクから
随時更新中なので気になる方いればご自由にお持ちください😄

リポジトリ名:move-experienced

コメントを残す

メールアドレスが公開されることはありません。