Unity ゲームで加速関数と減速関数を設定するためのアルゴリズム

1. まず伝送速度設定の関連パラメータに構造体↓を設定します。

public struct SpeedChangeInfo
{
    public float percent;   //改变速度的百分比
    public float dura;   //改变速度的持续时间
}

2.速度値が取得されるたびにスケーリングするために使用される速度パーセンテージ

public static float _percetV = 0f;
    //速度百分比
    public static float percentV
    {
        get { return 1-_percentV; }//如果速度变量就是“速度”,请修改为:“return _percentV”
        set { _percetV += value; }
    } 

3.速度値。一般的にプレイヤーの移動速度を表すにはfloat値を設定しますが、ここのmoveTimeは一定の距離を移動する時間を表しています。つまり、ここの値は速度に反比例します。(これが移動速度なら2の修正が必要、備考に合わせて修正)

public static float _moveTime = 0.6f
public static float moveTime
{
    get { return percentV * _moveTime; }
    set { _moveTime = value; }
}

4. コルーチンの設定

IEnumerator SpeedPercentChange(SpeedChangeInfo data)
{
    percentV = data.percent;//如果data.percent=0.6f,就是加速60%的基础移动速度。_percetV=0.6f,移动间隔就会减少40%
    yield return new WaitForSeconds(data.dura);
    percentV = -data.percent;
}

5.通話機能

public void SetSpeedAndDuration(SpeedChangeInfo data)
{
    StartCoroutine(SpeedPercentChange(data));
}

おすすめ

転載: blog.csdn.net/qq_18809975/article/details/130150299