. Pygameで重力とジャンプを作る!初心者向けのゲームアクション実装ガイド
Pygameで重力とジャンプを作る!初心者向けのゲームアクション実装ガイド
Pygameで重力とジャンプを作る!初心者向けのゲームアクション実装ガイド

Pygameで重力とジャンプを作る!初心者向けのゲームアクション実装ガイド

ゲームを作るうえで「キャラクターがジャンプする」「重力に従って落ちる」という要素は、多くのプラットフォームゲームで重要な機能です。Pygameは、Pythonで手軽に2Dゲームを作成できるライブラリであり、重力やジャンプのようなアクションを自分でコーディングして実装できます。

この記事では、Pygameでキャラクターに重力を適用し、ジャンプをさせる方法をステップごとに説明します。

目次
  1. Pygameのインストールと基本操作
  2. 重力とジャンプの実装
    1. サンプルコード
    2. サンプルコードの解説
      1. 重力の概念
      2. ジャンプの実装
  3. まとめ

Pygameのインストールと基本操作

ゆーや

Pygameのインストールについてはこちらから!

【完全独学Python】PythonでPygameをインストールする方法こんにちは!ゆーや(@yuyamanm118712)です!Pygameは、Pythonでゲーム開発を行うためのライブラリで、多くの開発者が2Dゲームの作成に利用しています。初心者からプロまで幅広く使われており、クロスプラットフォームであるた...yuya-blog.net2024.08.17

Pygameの基本的なコードについて分からなかったら以下の記事に戻ってみてね!

ゼロから始めるPygame!Pythonでゲームウィンドウを作ろう(背景色、画像表示など)Pygameは、Pythonで簡単にゲームを開発できる強力なライブラリです。その中でも基本的な機能の一つが「ウィンドウの作成」です。この記事では、Pygameをインストールする方法から、ウィンドウを開き、色や画像でカスタマイズする方法までを...yuya-blog.net2024.10.27

重力とジャンプの実装

サンプルコードimport pygame import sys # Pygameの初期化 pygame.init() # 画面サイズ SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Pygameでキャラクターを動かす") # キャラクターの読み込みとサイズ調整 character_image = pygame.image.load("img.png") character_image = pygame.transform.scale(character_image, (100, 100)) # 適切なサイズに変更 # 重力とジャンプの設定 gravity = 0.5 jump_strength = -10 # ジャンプの高さ or 強さ ground_level = SCREEN_HEIGHT - 100 # 地面の高さ # キャラクターの初期位置 player_pos = [SCREEN_WIDTH // 2, ground_level] player_vel_y = 0 # Y軸方向の速度 is_jumping = False # ジャンプしているかどうかのフラグ # 色の設定 background_color = (255, 255, 255) # 白色 clock = pygame.time.Clock() # ゲームループ while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE and not is_jumping: player_vel_y = jump_strength is_jumping = True # 重力の適用 player_vel_y += gravity player_pos[1] += player_vel_y # 地面での衝突判定 if player_pos[1] >= ground_level: player_pos[1] = ground_level player_vel_y = 0 is_jumping = False # 背景色の設定とキャラクターの描画 screen.fill(background_color) screen.blit(character_image, (player_pos[0], player_pos[1])) pygame.display.flip() clock.tick(60) ゆーや

これでスペースキーを押せば、ジャンプできるようになったよ!

この後詳しく解説していくよ!

サンプルコードの解説重力の概念

「重力」の概念を取り入れます。重力は常に下方向に引っ張る力として、キャラクターの位置に影響を与える力です。Pygameでは、重力を「Y軸方向の速度」に変化を与えることでシミュレーションできます。

例えば、gravityという変数に一定の値を設定し、Y軸の速度に加えることで重力の影響を与えます。

また、ジャンプの力をコントロールするために、適切なjump_strengthの値を設定します。また、ジャンプ中であることを判定するis_jumpingフラグも活用します。

# 重力とジャンプの設定 gravity = 0.5 jump_strength = -10 # ジャンプの高さ or 強さ ground_level = SCREEN_HEIGHT - 100 # 地面の高さ # キャラクターの初期位置 player_pos = [SCREEN_WIDTH // 2, ground_level] player_vel_y = 0 # Y軸方向の速度 is_jumping = False # ジャンプしているかどうかのフラグジャンプの実装 ~中略~ if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE and not is_jumping: player_vel_y = jump_strength is_jumping = True ゆーや

ジャンプを実装するには、ユーザーがジャンプキー(通常はスペースキー)を押したときにキャラクターのY軸速度をマイナスの値(今回で言う jump_strength)にする必要があります。このようにすることで、キャラクターは一時的に上方向に移動します。

そして、is_jumpingの状態を判定し、ジャンプ中(is_jumingがTrue)の時はスペースキーの押下に反応しない様にします。

# 重力の適用 player_vel_y += gravity player_pos[1] += player_vel_y ゆーや

player_vel_y(Y軸方向の速度)にgravity(重力)を足していくことで、Y軸方向の速度を徐々に減らしていき、かつ、player_pos[1](キャラクターのY座標)はplayer_vel_yと一緒に下がっていくように設定するといいでしょう!

# 地面での衝突判定 if player_pos[1] >= ground_level: player_pos[1] = ground_level player_vel_y = 0 is_jumping = Falseゆーや

地面との衝突判定は、ground_level(地面の高さ)よりplayer_pos[1](キャラクターのY座標)が低くなったら、状態を初期状態に戻してあげましょう!

まとめ

このように、Pygameで重力やジャンプを実装することは、基本的な物理演算を理解するためにも良い練習になります。ゲーム作りの中でこうした基礎的なアクションを身につければ、より複雑な動きやアニメーションにも応用できるでしょう!

📎📎📎📎📎📎📎📎📎📎