

**やりたいこと**  
Slider の値を敵モンスターの数に応じて、少しずつ減らしたいです。

画面上に敵モンスターがいるとします。  
この敵モンスターが画面上にいると、  
時間とともに（たとえば１秒ごとに）、  
モンスターの数に応じて  
Sliderの値がどんどん減少していく、という処理をしたいです。

**発生している問題**  
１体のモンスターが画面上にいる場合は、解決できました。  
しかし、同じモンスターが画面に複数いる場合にも、  
Slider の値が１体分しか減りません。

たとえば、３体いるなら、３体分減少させたいです。  
そして、  
１体倒して２体に減ったら、２体分、というように変化させたいです。

**該当のソースコード**  
敵モンスター側のコードが以下になります。

[code]

    float Damage = 1.0f;
    float timeLeft;
    
    ……
    
    void Update()
    {
        timeLeft -= Time.deltaTime;
        if (timeLeft <= 0.0)
        {
            timeLeft = 1.0f;
            stressSliderManager.Minus(Damage);
        }
    
[/code]

次に、スライダー側（空のGameObjectに付与しているスクリプト）が以下です。

[code]

    public void Minus(float Damage)
    {
        HPnow -= Damage;
        MySlider.value = HPnow;
    }
    
[/code]

**試したこと**  
まずは敵モンスターをプレハブとして、同じものを３体配置。  
しかし、上記の `Damage = 1.0f` にある通り、１秒に１ずつしか減りませんでした。

次に、メソッドの名前が同じのを使ってるからいけないのかも、と考え、  
モンスターは同じでも、名前を変えたメソッドを用意して書き換えました。  
（Minus2nd といったようにです。）  
やはり、中身が同じだからなのか（？）１ずつしか減りません。

３体の場合、１秒に３減らしていくにはどのように記述すればよいでしょうか。  
ご教授よろしくお願い致します。


CC BY-SA 4.0
2020-08-17T15:11:35.917
69635
2020-08-17T16:35:57.263
2020-08-17T16:35:57.263
3060
41525
question
c# unity2d
敵の数に応じて Slider の値を減少処理方法