見出し画像

ベルトスクロールアクション作成メモ

現在ベルトスクロールアクションを作成しています。

初めて作ってみて、色々とわかったことがあるので、メモを残しておきます。

■座標の扱いについて

3D描画機能がある環境を使っていれば、以下のことは気にする必要ありません。
現在私が使っている環境が基本2D描画機能のみなので、ベルトスクロールアクションを作るには擬似的に3D的な奥行きを実装する必要があります。

X軸(左右移動)についてはそのまま使いました。
問題となるのがZ軸の移動で、Z値をY軸移動に変換して使用しています。
正確なパースを計算するのであれば、X値もずらす必要があるのですが、ダブルドラゴンがY軸移動のみだったので、それに合わせるようにしました。

■当たり判定について

攻撃モーションに対する当たり判定は、モーション開始時に「当たり判定用オブジェクト」を生成するようにしました

あとそれに対する Z軸を考慮した当たり判定は、Zの範囲が±32以内であれば、当たり、とするようにしました。

■攻撃パラメータの受け渡しについて

攻撃パラメータは一元管理しやすいようにテーブルデータとしました。
もちろん、座標や攻撃された方向などの動的なパラメータはあるので、それは受け渡しが必要なのですが、動的に変化しないパラメータは ID のみを渡してなるべく多くのパラメータを受け渡ししないようにしています

これはどういうことかと言うと、攻撃判定を「当たり判定オブジェクト」を経由しているため、パラメータの受け渡しが複数回発生してしまうためです。

プレイヤーキャラクター → 当たり判定オブジェクト → 敵キャラクター

矢印の部分でパラメータ受け渡しが発生します。
また当たり判定をコールバックで行なっているため、敵側は内部で2回受け渡しを行なっています。

1. 敵の当たり判定コールバックでパラメータ受け取り
2. 敵の更新処理でパラメータを反映

つまり、計3回パラメータを受け渡しを行なっているため、パラメータの項目が増えると3箇所修正する必要があり、メンテナンスしづらいコードとなってしまいます
そのため、固定パラメータはIDで参照できるようにしました、

■最後に

ひとまず現状としてはここまでです。今後、連続技やつかみ技、敵のAI などを実装したら、それに関する記事をまた書くかもしれません。

■おまけ

・ギルティでよく使う英語まとめhttps://blog.goo.ne.jp/pbeshinji/e/2ab2c6d0a7a5ea00f8ed345459e47d08
格闘ゲームに使われる英語がまとまっていて、定数や変数名に使うときに参考にしています。

ダウン:knockdown
浮かせ技:launch

発生F:start-up frame
持続F:active frame
硬直F:recovery frame

発生F→持続F→硬直F

当たり判定:hit-box
くらい判定:hurt-box

ここらへんが参考になりました

■関連する記事

ベルトアクションの面白さについて考えてみました。たくさん出てくる敵を、近接攻撃で蹴散らす爽快感がベルトアクションの核となる面白さになっている気がします。

ベルトアクションの敵のAIについて、「プレイヤーの後ろに回り込んで挟み撃ちにする」という動きをどうやって実装するかを考えてみました。

この記事が気に入ったらサポートをしてみませんか?