【ゲーム作成】Pythonでスマブラの攻撃、撃墜を作ってみた!【pygame】

Python

概要

今回はプログラミングでスマブラの攻撃、撃墜を簡易的にですが再現してみました。
では解説を開始します

ステージと落下の挙動

まずはステージと落下の挙動について作成します。
ステージ外に落下すると撃墜エフェクトが発生し、撃墜音声が再生されるようにする
まずはステージを作成しましょう。ステージはpygame.Rectというライブラリを使用すると作成できます

pygame.Rectは四角形のオブジェクトを扱うライブラリです。これを画面の下の方に配置しましょう
これでステージを作成できました。しかし単純にステージを作成しただけでは足場にはなりません。

操作キャラクターとステージとの間に接触判定を行い、
接触している場合は操作キャラクターの落下を止めなければなりません
pygameのライブラリcolliderectで操作キャラクターとステージオブジェクトが接触しているかの判定を行い、
もし接触しているなら落下速度のパラメータを0に設定し、落下を止めます
実際に動かしてみましょう。
今度はステージに着地できましたね。ステージ外に行くともちろん落下してゆきます

落下時に撃墜エフェクトと撃墜音声

続いて、落下時に撃墜エフェクトと撃墜音声が発生するようにしましょう
まずは撃墜エフェクトについてです
撃墜エフェクトを発生させるのは比較的簡単です
操作キャラクターが特定のX軸やY軸を超えた時点で操作キャラクターの位置に撃墜の素材を発生させます

また、pygame.mixer.musicを使用して音声を再生させます
実際に動かしてみましょう。
落下した際に撃墜エフェクトと撃墜音声が発生していることが確認できますね

攻撃モーションと被ダメージモーション

①ホリクラシックコントローラーのAボタンの入力を受け取り、攻撃モーションを表示

まずは①ホリクラシックコントローラーのAボタンの入力を受け取り、攻撃モーションを表示する、を作成してゆきます
ホリクラシックコントローラーの入力イベントオブジェクトはpygame.event.get()で受け取ることができます
この中のbutton属性が0のものがAボタンに対応します
そして、Aボタンの入力がされた際に、blitで攻撃モーション素材を表示します
実際に動かしてみましょう。これで攻撃モーションが作成できました

②攻撃が敵キャラクターにヒットしているか否かの判定を行う

続いて②攻撃が敵キャラクターにヒットしているか否かの判定を行う、を作成しましょう
まずは攻撃モーションを行った際に、攻撃判定を持つオブジェクトを操作キャラクターが向いている方向の前方に配置します
そして、攻撃判定オブジェクトと敵キャラクターが重なっていれば攻撃成功となります
この判定はcolliderectで行います

③攻撃がヒットした場合に敵キャラクターの被ダメージを表示する

続いて、③攻撃がヒットした場合に敵キャラクターの被ダメージを表示する、を作成します
まずpygame.font.Fontをblitで画面の下の方にダメージを表示します

④攻撃がヒットした場合、ダメージを加算する

続いて、④攻撃がヒットした場合、ダメージを加算する、を作成してゆきます
そして、②の攻撃がヒットした判定となった際に相手の被ダメージを増加させる処理を行います
落下して撃墜した際には被ダメージをリセットする処理も忘れずに入れておきましょう

⑤攻撃がヒットした場合、ふっとびの挙動を行う

最後に⑤攻撃がヒットした場合、ふっとびの挙動を行う。その際には被ダメージを考慮する、を作成します
まず、ふっとびの挙動を作成してゆきます
ふっとびの挙動はジャンプの挙動を応用することによって作成できます
ジャンプの際には、ジャンプ入力時の1フレーム目に上方向に初速を設定し、その値をキャラクターの位置に適用し
それ以降は初速から重力加速度を減算した速度をキャラクターの位置に適用していました
ふっとびの場合は、攻撃ヒット時にx軸とy軸方向に初速を設定し、その値をキャラクターの位置に適用し
それ以降、ジャンプの時と同様に初速から速度を徐々に減らしてゆきますが
x方向の速度は0になるまで減らします。y方向の速度はある落下速度に到達するまで減らしてゆきます
実際の挙動を確認してゆきましょう
被ダメージ率が低い場合は吹っ飛ばしが低く、
被ダメージ率が高い場合は吹っ飛ばしが高いという挙動をある程度再現できていますね

タイトルとURLをコピーしました