U8's AppLabo

swift,cocos2d-x,Unityを使ったiOSアプリ作成の備忘録

unity

【 Unity 】ガチャを作ってみた

投稿日:

乱数を使えば、単純なガチャっぽい機能は実現出来る。

string[] keihin = {"ライオン" ,"トラ" ,”ネコ”,”ネズミ"};

int i = random.range(0,4);

Debug.Log(keihin[i] + “が当たりました!”);

 

でも、コレだと出現確率に偏りをもたせられないので、

出現確率も設定できるようにガチャを作ってみた。

public class GachaManager : MonoBehaviour
{
   
    //景品の名前と出現確率を2次元配列で設定・・・①
    string[,] nakami =
    {
        {"ライオン","10"},
        {"トラ","20"},
        {"ネコ","30"},
        {"ネズミ","50"}
    };

    int maxPer = 0;//出現確率の合計値

    void Start()
    {
        //出現確率の合計値を求める・・・②
        for (int i = 0; i < nakami.GetLength(0); i++)
        {
            maxPer += int.Parse(nakami[i, 1]);

        }
    }

    public void getCupsel()
    {

        int randNo = Random.Range(0, maxPer);//乱数(0から出現確率の合計の間で生成)・・・③
        int index = 0;//景品番号

        int nowPer = 0;//調査用出現確率

        //乱数randNoがどのキャラクターの出現確率にヒットしたか調べる・・・④
        for (int i = 0; i < nakami.GetLength(0); i++)
        {
            if (randNo < int.Parse(nakami[i, 1]) + nowPer)
            {
                index = i;

                break;
            }
            else
            {
                nowPer += int.Parse(nakami[i, 1]);
            }
        }

        Debug.Log(nakami[index, 0] + "が当たりました!");
    }
}

 

①ガチャの景品の名前に加えて出現確率を2次元配列で設定。

②ガチャの中身の確率の合計maxPerをを計算

③maxPerを元に乱数を生成する。

④乱数randNoがどのキャラクターの出現確率にヒットしたか調べる

もしrandNoが23だった場合は3番目のネコが返されます。

 

出現確率の値が小さほど、その景品は出にくくなります。

 

フッターアド




フッターアド




-unity
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Unity】配列から特定の要素を削除する。C#

配列{ “リンゴ”, “モモ”, “ミカン”, “イチゴ”, “メロン”, “バナナ”, “ブドウ”}からミカンを削除したい。 removeAt(n)で削除できるかと思ったが、Array型にはremo …

【Unity】CSVファイルの読み込み C#

CSVファイルを読込Dictionary型へ格納する。 まず下記の様にCSVファイルを作成し、Assetフォルダ内のResourcesフォルダに配置する。(Resourcesフォルダが無い場合は作成す …