14歩目 レベルアップを実装! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回は、敵を倒したときにEXP(経験値)とG(お金)を獲得できるようにしました!

14歩目 レベルアップの実装!

今回はそのEXPを活用して、プレイヤーがレベルアップできる仕組みを実装していきます!

PlayerData.csの変更

まず、レベルアップに必要な経験値を管理するためのフィールドを追加します。

public int expToNextLevel;

PlayerManager.csの変更

次に、EXPの獲得→レベルアップ判定→ステータス上昇の流れを構築します。

public void GainRewards(int exp, int gold)
{
    player.exp += exp;
    player.gold += gold;
    Debug.Log($"{player.name}は{exp}EXPと{gold}Gを獲得しました!");
    
    // レベルアップを確認
    CheckLevelUp();
}

private void CheckLevelUp()
{
    if (player.exp >= player.expToNextLevel)
    {
        LevelUp();
    }
}

private void LevelUp()
{
    player.level++;
    player.maxHP += 20;
    player.currentHP = player.maxHP; // 全回復
    player.attack += 5;
    player.defense += 3;
    player.expToNextLevel += 10; // 次のレベルに必要なEXPを増加
    player.exp = 0;

    Debug.Log($"{player.name}がレベルアップ! レベル{player.level}になりました!");
    Debug.Log($"HP: {player.maxHP}, 攻撃力: {player.attack}, 防御力: {player.defense}");
}

Unityで確認!

Unityでゲームを起動し、スライムを倒してみましょう。

ログに以下のような表示が出れば、勇者のレベルアップが成功していることが確認できます!

ゲーム画面でもレベルアップが反映されているはずです!

まとめ

今回はレベルアップの仕組みを実装しました!

敵を倒して、経験値を集めて、レベルアップして強くなる——

まさにRPGの醍醐味ですね!

完成度がどんどん上がっていくにつれ、私もワクワクが止まりません!

次回予告

次回は、プレイヤーや敵に画像(スプライト)を設定して、ビジュアル面を強化していきたいと思います!お楽しみに!

コメント

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