経験値が一定数たまったらレベルアップさせるぞ
経験値が一定値以上になった時の処理をやっていきます。
難しいことのほとんどを前回の(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 だけでみつけきれるのか?ちょっとじっけんしてみたいですね
ステータスのあげる成長曲線等は、もうちょっと考えたほうがいいかもでしたが、とりあえず完成
コメント