

敵を倒すゲームを作成中です、敵を倒してスコアを取得しスコアを20点獲得する毎に敵のスポーン値を上昇させる機能を作りたいのですが、スコアを20点獲得する毎に処理を動かす部分がわかりません、教えてください。


CC BY-SA 4.0
2020-03-30T15:40:34.847
65244
2020-10-22T04:06:58.113
2020-03-30T16:32:16.207
32986
question
c# unity3d
ゲームのスコアを n 点獲得する毎に処理を実行するには？


スポーン管理するSpawnerオブジェクト  
残機・スコア・ポーズ制御フラグetc.をまとめたGameSystemオブジェクト  
があると仮定します

SpawnerがGameSystemオブジェクトを参照していれば良いのです。  
スコアによってSpawnerの挙動が変わるコードはSpawner自身が持つべき挙動なので、  
Spawner.Moveロジック（直接使っているならMonoBehaviour.Update）で  
GameSystem.Scoreをチェックして、条件を満たしたらスポーン制御パラメータを変更します。


CC BY-SA 4.0
2020-03-31T04:54:11.090
65248
2020-03-31T04:54:11.090
25396
65244
answer


方法1： １点ずつ加点する場合は割り算の余りを使う方法があります。

[code]

    int score;
    
    void AddScore()
    {
      int n = 20;
    
      score++;
      if (score % n == 0)
      {
        AddSpawnRate();
      }
    }
    
[/code]

方法2： 加点が変化する場合は判定用の変数を導入します。

[code]

    int score;
    int bucket;
    
    void AddScore(int value)
    {
      int n = 20;
    
      score += value;
      bucket += value;
      while (bucket >= n)
      {
        bucket -= n;
        AddSpawnRate();
      }
    }
    
[/code]


CC BY-SA 4.0
2020-10-22T04:06:58.113
71411
2020-10-22T04:06:58.113
14817
65244
answer