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