(2)unity キャラクターにレベルアップ要素を実装するぞ Next経験値Lvup時のステータスUP等を を自動で計算編

経験値が一定数たまったらレベルアップさせるぞ

経験値が一定値以上になった時の処理をやっていきます。

難しいことのほとんどを前回の(1)unity キャラクターにレベルアップ要素を実装するぞ スクリプト間の変数のやりとり、シーンチェンジの時に破棄されたら困るぞ編の続きです。こちらもどうぞ

このページ作った時に買ったものではないですが、僕の買ったやつの2019版ですかね、どうせ買うなら、最新版、自分の使ってるunityのバージョンと合わせて買いましょう、安心ですよ※このページの内容が丸ごと乗っているわけではないです、この本プラスネット検索が大事かもです、でも1冊以上は、買ったほうがいいかもですので、おすすめのやつを紹介

とりあえず今回追加したスクリプトを貼ります

void Update () {
        if (EXP_rui >= EXP_nextrui)
        {
            Lv_p += 1;
            EXP_nextrui = Mathf.RoundToInt(EXP_nextrui * 1.2f);
            ATK = Mathf.RoundToInt(ATK * 1.2f);
            HP_max = Mathf.RoundToInt(HP_max * 1.2f);
            HP = HP_max;//レベルアップしたら体力満タンにしたかったから
        }
 }

※メインシーンの空のオブジェクトにアタッチした、ステータス管理用のスクリプトに足しました。

if文で経験値(累計)が次の経験値(累計)になるかそれ以上になったら

==にしなかったのは、ぴったりEXP_rui == EXP_nextruiになることは、あまりないはずなので>=にしました

とりあえずif文の条件を満たしたらステータス上げていきます

EXP_nextrui = Mathf.RoundToInt(EXP_nextrui * 1.2f);

レベルアップしたら次の経験値は、今回の次の経験値の1.2倍にしたかったのですが、経験値の小数点を四捨五入したかったのでこうなりました

Mathf.RoundToInt

いろんな種類があるみたいですが、こうすると四捨五入されます、

このながれで数字は、好みでステータスアップさせてください

攻撃力を扱う側のスクリプトをなおします

var yodame_kakunin= col.gameObject.GetComponent<hidame>();
       if(yodame_kakunin != null)
        {
            var d = GameObject.Find("sutekanri_m").GetComponent<sutekanri_m>();
            int a = sutekanri_m.ATK;
            a += 10;  //実験です気にしないで
        
            yodame_kakunin.hidame_01(a);
        }

前に作ったインターフェース側では、ATKは、int型だったのでステータス管理側のstatic int ATKになおしました

あと今気づいたのですが、var d 使ってないね

int a = sutekanri_m.ATK だけでみつけきれるのか?ちょっとじっけんしてみたいですね

ステータスのあげる成長曲線等は、もうちょっと考えたほうがいいかもでしたが、とりあえず完成

 

コメント

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