Skip to content

srcs__player__player_cpp

Ishi_eenn edited this page May 19, 2026 · 2 revisions

srcs/player/player.cpp

役割

カメラを持つプレイヤーの移動、飛行/重力、水中挙動、衝突判定、ブロック選択を処理する。

関数一覧

  • Player::init: 行 42-44
  • Player::overlapsAny: 行 55-77
  • Player::update: 行 86-268
  • Player::chunkPos: 行 271-276

関数ごとの説明

Player::init

  • 場所: 行 42-44
  • シグネチャ: void Player::init(GLFWwindow* window)
  • 内容: 必要な状態や外部リソースを初期化する。
  • 主な呼び出し: init()

Player::overlapsAny

  • 場所: 行 55-77
  • シグネチャ: bool Player::overlapsAny(float px, float py, float pz, const std::function<bool(int,int,int)>& isSolid)
  • 内容: このファイルの責務に沿った補助処理を行う。
  • 主な呼び出し: bool(), floor(), isSolid()

Player::update

  • 場所: 行 86-268
  • シグネチャ: void Player::update(float dt, const std::function<bool(int,int,int)>& isSolid, const std::function<bool(int,int,int)>& isWater)
  • 内容: 入力と現在の環境から移動量を計算し、飛行/水中/重力と衝突判定を反映してカメラ位置を更新する。
  • 主な呼び出し: bool(), newFrame(), glfwPollEvents(), isHeld(), fprintf(), isCursorCaptured(), mouseDX(), mouseDY(), setYaw(), getYaw()

手順:

  1. マウス移動量からカメラのyaw/pitchを更新する。
  2. キー入力から水平移動、ジャンプ、下降、飛行切り替えを判定する。
  3. 現在位置が水中かどうかを調べ、通常/水中/飛行で移動ルールを切り替える。
  4. 重力や垂直速度を更新する。
  5. X/Y/Z軸ごとに移動を試し、衝突する場合はその軸の移動を止める。
  6. 最終位置をカメラへ反映し、選択ブロックやリサイズ状態も更新する。

Player::chunkPos

  • 場所: 行 271-276
  • シグネチャ: ChunkPos Player::chunkPos() const
  • 内容: このファイルの責務に沿った補助処理を行う。
  • 主な呼び出し: chunkPos(), position(), floor()

Clone this wiki locally