質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

985閲覧

Unityでレベルをつける

loKA

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/09/06 23:49

レベルのシステムを作りたいと思っています
とりあえずexpが100になったらlevelが1あがるようにしたいんですが、これだとアップデートで呼んでるので、レベルが急に上がってしまいます

cs

1public class Leveling : MonoBehaviour 2{ 3 public int exp; 4 public int level; 5 public int epxLimit; 6 7 void Start() 8 { 9 10 } 11 12 // Update is called once per frame 13 void Update() 14 { 15 Test(); 16 LevelTable(); 17 } 18 19 public void AddExp(int amountExp) 20 { 21 exp += amountExp; 22 } 23 24 public void LevelTable() 25 { 26 if( exp == 100) 27 { 28 level++; 29 } 30 } 31 32 void Test() 33 { 34 if(Input.GetKeyDown(KeyCode.J)) 35 { 36 Debug.Log("経験値=" + exp); 37 Debug.Log("レベル=" + level); 38 } 39 } 40```

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/09/06 23:58

exp が上がった瞬間にしかレベルは上がらないので、AddExp でチェックするのがいいと思います。また、if (exp == 100) { level++; } より、if (exp >= level * 100) { level = exp / 100 + 1; } のように exp と level の対応計算式を使った方が一般化できます。それと、普通は exp と level は比例するものではなく、成長すればするほど伸びが鈍化します。
m.ts10806

2020/09/07 00:04

質問は何でしょうか
guest

回答1

0

レベルアップを実装したいということですね。

とりあえずコードです↓

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class LevelUp : MonoBehaviour 6{ 7 [Header("レベルアップするレベルを決める")] 8 public List<int> LevelUps; 9 private int level; 10 //どこまでレベルアップしたか↓ 11 private int passlevelups; 12 private int exp; 13 // Start is called before the first frame update 14 void Start() 15 { 16 level = 0; 17 passlevelups = 0; 18 exp = 0; 19 } 20 21 // Update is called once per frame 22 void Update() 23 { 24 //expを加算 25 exp += 1; 26 //レベルのカンストによるエラーを抑える 27 if (passlevelups == LevelUps.Count) 28 { 29 30 } 31 //expがレベルアップできる値か 32 else if (exp > LevelUps[passlevelups]) 33 { 34 level += 1; 35 passlevelups += 1; 36 } 37 //Debugする 38 Debug.Log("今のLevel:" + level); 39 Debug.Log("今のexp" + exp); 40 } 41 42} 43

使い方
何らかのオブジェクトにスクリプトをアタッチし、インスペクターから
LevelUpsをクリックして表示し、Sizeから、LevelUpする段階の数を指定し、
Element ~ にLevelUpに必要なexpの量を指定してください。また、数は小さいもの順にしてください。

投稿2020/09/26 15:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問