Skip to main content

まずは、プレイヤーをつくる

これは、いつものモデル読んでGameObject継承したPlayerクラス作る感じでいいと思う。
必要な情報はあとで追加していこう。
最低限必要なところで考えると。以下のようなクラスになりそう。

✅ 例:クラス構成の改善案(関数分割)

class Player : public GameObject {
public:
    void Initialize() override;
    void Update() override;
    void Draw() override;
    void Release() override;

private:
    void HandleInput();           // 入力処理まとめ
    void ApplyGroundAdjustment(); // 地面に沿って傾き・高さ補正
    void SetTPSCamera();          // TPS視点カメラ制御

    int hPlayer = -1;
    const float moveSpeed = 5.0f;
    const float rotateSpeed = 90.0f;
    XMFLOAT3 forward_ = {0, 0, -1, 1.0};
};

🧠 小学生でもわかる要約文(ここまでの内容)

  • プレイヤーは「矢印キーで動く人形」です。
  • 地面に合わせてちゃんと立つようにしてます。
  • 地形の高さを調べて、プレイヤーが浮いたり埋まったりしないようにします。
  • プレイヤーの後ろにカメラがくっついて、いつも後ろから見えるようにしてます。
  • そのためのいろんな処理を、関数にわけてスッキリさせたいです。

🟩 1. Initialize():プレイヤーの初期化

🛠 目的:

プレイヤーのモデルを読み込み、初期位置と向きを設定します。また、TPS(後ろから追いかけるカメラ)の初期位置もここでセットします。

✅ 実装と説明:

void Player::Initialize()
{
    hPlayer = Model::Load("Player.fbx"); // モデル読み込み
    Model::SetAnimFrame(hPlayer, 0, 42, 1.0); // アニメーション範囲設定(0~42)

    // 初期向き(Z+方向を向くようにするために180度回転)
    transform_.rotate_ = { 0.0f, 180.0f, 0.0f };

    // 初期位置(地形の中心あたりに置く想定)
    transform_.position_ = { 0.0f, 0.0f, 0.0f };

    // 初期の前向きベクトルもZ+方向(右手系の場合、奥に向かって前進)
    forward_ = { 0.0f, 0.0f, 1.0f };

    // カメラ初期設定
    SetTPSCamera();
}