39歩目 アーティファクトのレアリティーを実装! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回は、ついにガチャ機能を実装!

ダイヤを使ってアーティファクトを手に入れられるようになり、育成の幅がぐっと広がりました。ゲームらしさもアップして、より楽しくなりましたね!

アーティファクトのレアリティーを実装!

今回はアーティファクトにランク(レアリティ)を導入していきます!

排出されるアーティファクトに「S・A・B・C」の4つのランクを設定し、それぞれ排出確率を以下のようにしました:

ランク排出確率
Sランク10%
Aランク20%
Bランク30%
Cランク40%


Sランクは滅多に出ませんが、その分強力!出たときのうれしさもひとしおです。

スクリプトの変更

ArtifactManager.cs

UnityのRandom.Rangeを使って、確率に応じたランクをランダムで決定しています。

指定されたランクの中から、ランダムでアーティファクトを1つ選びます。

    // ガチャの排出率を取得
    private ArtifactRank GetRandomRank()
    {
        float random = Random.Range(0f, 1f);
        
        // Sランク: 10%
        if (random < 0.1f)
        {
            return ArtifactRank.S;
        }
        // Aランク: 20%
        else if (random < 0.3f)
        {
            return ArtifactRank.A;
        }
        // Bランク: 30%
        else if (random < 0.6f)
        {
            return ArtifactRank.B;
        }
        // Cランク: 40%
        else
        {
            return ArtifactRank.C;
        }
    }

    // 指定されたランクのアーティファクトを取得
    private ArtifactData GetRandomArtifactByRank(ArtifactRank rank)
    {
        List<ArtifactData> rankArtifacts = new List<ArtifactData>();
        
        foreach (var artifact in availableArtifacts)
        {
            if (artifact.rank == rank)
            {
                rankArtifacts.Add(artifact);
            }
        }
        
        if (rankArtifacts.Count > 0)
        {
            return rankArtifacts[Random.Range(0, rankArtifacts.Count)];
        }
        
        // 指定されたランクのアーティファクトがない場合はCランクを返す
        return availableArtifacts[0];
    }

Unityでの設定

  1. Inspectorで各アーティファクトのRankを設定
    • ArtifactManager の availableArtifacts リスト内の各アイテムに rank を指定します。
  2. プレハブなどでランク表示のUIがある場合は表示更新

動作確認

実際に何回かガチャを引いてみたところ…

  • ちゃんとS~Cランクがバランスよく排出されているのを確認!
  • Sランクは10%の確率なだけあって、なかなか出ない…でも出たときはテンション爆上がり!

まとめ

今回はアーティファクトにランク(レアリティ)を追加し、ガチャのドキドキ感をさらに強化しました!

高ランクのアーティファクトを引き当てると、一気に強くなれるので、プレイヤーのやる気にも直結しますね。

次回予告

セーブ機能を実装予定です!

せっかく手に入れたアーティファクトを保存しておかないともったいない!

どうぞお楽しみに!

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