減衰係数という機能ではなく、どうやったら減衰係数をかけられるか、つまり今ある「速度」をどうやったら〇%ずつ減らして徐々に遅くすることができるか……というような記事です。
初期状態
//Unity C#
//移動・回転の速さ
float speed = 0;
    void Update()
    {
        this.transform.Rotate(0, 0, speed);
    }
    void OnMouseDown()
    {
        //クリックすると速さを10にする
        speed = 10;
    }
こんな感じのコードを書いて、コライダーを付けたオブジェクトにセットしておきます。
クリックすると回転速度が変わり、Updateで常に回転する命令がかかっているので、
クリックすると回転速度が変わり、Updateで常に回転する命令がかかっているので、

一度クリックすると、永遠に回り続けます。
直線状に減速
//Unity C#
    void Update()
    {
    //speedが0より大きい場合
        if(speed > 0)
        {
            speed -= 0.01f;
            this.transform.Rotate(0, 0, speed);
        }
    }
まず単純に同じ値ずつスピードを下げた場合。グラフにすると、直線状にスピードが減速します。
ちなみにspeed -= 0.01f;はspeed = speed – 0.01f;と同じ意味です。
ちなみにspeed -= 0.01f;はspeed = speed – 0.01f;と同じ意味です。

実行結果です。これはこれで悪くはないですが、
//Unity C#
    void Update()
    {
        if(speed > 0)
        {
      //減速係数
            speed *= 0.995f;
            this.transform.Rotate(0, 0, speed);
        }
    }
原則係数で複利的に速度を減らす場合と比較してみましょう。こちらは処理が走るたびに、現在の速度×0.995に速度が微調整されるので、速度が遅くなるほど減速幅も小さくなります。

結果はこれ。最後にじわっと余韻が残るような止まり方となります。
ちなみにこちらの処理だと、speedは原理上0になることはなく、無限に減速し続けます。その幅があまりに小さいため、見かけ上止まって見えているだけです。気になるなら時間で区切ってもいいかもしれません。
ちなみにこちらの処理だと、speedは原理上0になることはなく、無限に減速し続けます。その幅があまりに小さいため、見かけ上止まって見えているだけです。気になるなら時間で区切ってもいいかもしれません。

やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
  
  
  
  

コメント