Pythonでゲーム制作

Pythonistaでキャラクターをジャンプさせる処理を作成する

今回はPythonistaのsceneライブラリを活用してアクションゲームのジャンプ処理を作成する方法を紹介します。

本記事の内容は以下の通りです。

・Pythonistaでキャラクターをジャンプさせる処理を考える
・Pythonistaでキャラクターをジャンプさせる方法の実装

Pythonistaでキャラクターをジャンプさせる処理を考える

ジャンプ
ジャンプ処理を実装するためには以下の3つについて考える必要があります。

・ジャンプを起こすタイミング
・上昇時と落下時の処理
・ユーザの操作方法

ジャンプを起こすタイミング

まずはジャンプを起こすタイミングを決めておきましょう。

基本的にジャンプはプレイヤーが意図した時にできると良いので、今回は画面をタップした時にジャンプさせることにします。

また、ジャンプ中などジャンプを受け付けないタイミングについても考慮しておきましょう

上昇時と落下時の処理

ジャンプの処理は大きく分けると「上昇」と「落下」の2つの状態に分けることができます。

ジャンプを開始したら縦軸の上方向(+方向)に移動します。
一定の高さに達したら上昇処理を終了し落下に移行。

落下は縦軸の下方向(−方向)に移動します。
地面に着地したら落下処理終了です。

ユーザの操作方法

最後にユーザの操作について考えます。

どのような操作にすれば最もユーザが操作しやすいか考えるようにしましょう。
例えば今回実装するジャンプであれば、

・画面のどこをタップしてもジャンプ
・ジャンプボタンを設置してジャンプ

などの方法が考えられます。
これは一概にどっちがいいということはないです。

アクションがジャンプや移動くらいであれば、ボタンを設置してなくても良いと思います

逆に攻撃とジャンプの両方のアクションを入れたい場合は、ボタンを設置した方が操作しやすそうですね

長押しなどでアクションを切り分ける方法もありますが、操作ミスが増えるのでまずはボタンでアクションを切り替える仕様で作るのがおすすめです。

以下の実装ではボタンを追加する場合の例を紹介します。

Pythonistaでキャラクターをジャンプさせる方法の実装

ジャンプアクションを実現するために以下の処理を実装します。

・ジャンプ中の状態の仕様
・上昇時の処理
・落下時の処理
・ジャンプのUI

ジャンプ中の状態の仕様

以下の3つの状態を作成します。

・ready:ジャンプ操作を受け付ける状態
・up:ジャンプ中(上昇)
・down:ジャンプ中(落下)

状態が「ready」の時のみジャンプできるように実装します。
「up」または「down」の時はジャンプ操作を受けつけません。

その他攻撃中などジャンプができない瞬間を実現したいなら「wait(待ち)」などのステータスを作っておくと良いでしょう。

上昇時の処理

ジャンプ上昇中の処理はupdate()メソッドで監視して実行して徐々に上昇させます。

上昇の処理は以下の通り。

・状態が上昇中(up)ならキャラクターを上昇させる
・一定の高さに到達したら落下(down)に移行

コードにすると以下のようになります。処理はupdate()メソッド内に記述してください。

ポジションを変えたい場合は「self.player.position」のy座標を変更します。

max_heightはジャンプの高さ、up_speedはジャンプのスピードの設定です。

落下時の処理

ジャンプで落下中の処理は上昇と同様update()メソッドで監視して徐々に落下させます。

落下の処理は以下の通り。
・状態が上昇中(down)ならキャラクターを落下させる
・地面に到着したらジャンプ終了(readyにする)

コードにすると以下のようになります。

ポジションを変えたい場合は「self.player.position」のy座標を変更します。

down_speedはジャンプのスピードの設定です。

ジャンプのUI

ジャンプボタンをタップした時の処理を実装する場合、「touch_began()」メソッドに実装します。

必要な処理は以下の通り。

・タップした位置がジャンプボタンで状態が「ready」ならジャンプ処理に移行
・効果音を鳴らす
・状態を「up」に変える

無音だと味気ないので効果音を追加しています。

コードの実装例は以下の通り。「touch_began()」

実装例

上記コードをまとめると以下のようになります。

◆実行結果

※上記のコインとかキノコの処理は本記事だけでは作成できません。
Pythonista+sceneで当たり判定を作成する方法」をお読みください。

以上、ジャンプアクションの実装方法でした。

Pythonistaまとめ>>Pythonistaの使い方まとめ

こちらの記事も読まれています

  • この記事を書いた人

みやびの

住んでいるところ:神奈川県。 プログラミング歴は13年ほど。 ※プログラミングに関する無料相談・質問への回答は行っていません。

-Pythonでゲーム制作
-

Copyright© みやびのどっとぴーわい , 2024 All Rights Reserved Powered by AFFINGER5.