将值转换为等待时间量表(冷却量表)?

时间:2019-03-01 16:16:55

标签: c# unity3d

最近,作为一名新手程序员,我不知所措。

这是代码:

 public class Test : MonoBehaviour
{
    public float minDuration = 1.5f;
    public float maxDuration = 5f;
    public float minValue = 1f;
    public float maxValue = 99f;
    public float currentValue;
    public float waittime;
    public float EVA;
    public Image Waitgauge;



    void Start()
    {
        waittime = Mathf.Round(GetDurationRemaining(minDuration, maxDuration, minValue, maxValue, currentValue) * 10f) / 10f;
        EVA = Evasion(currentValue);
    }




    private void Update()
    { /*
        UpgradeWaitGauge();
        */
    }




    public float GetDurationRemaining(float minDuration, float maxDuration, float minValue, float maxValue, float currentValue)
    {
        float durationGap = maxDuration - minDuration;
        float t = Mathf.InverseLerp(minValue, maxValue, currentValue);

        //Sine easing - Change this equation to match a curve you'd like
        t = Mathf.Sin(Mathf.PI * t * 0.5f);

        return minDuration + ((1f - t) * durationGap);
    }




    /*
     void  UpgradeWaitGauge()
    {
        waittime += Time.deltaTime;
        Vector3 origScale = Waitgauge.transform.localScale;
        origScale.x = Mathf.Clamp(waittime / (waittime - maxDuration), 0, 1);
        Waitgauge.transform.localScale = origScale;
    }
    */





    public float Evasion(float CurrentValue)
    {
        return Mathf.Round((currentValue * 0.30f) *100f / 100f);
    }
}

我正在创建一个类似于电子游戏系列《最终幻想》(4-9,12)中的等待量规。该代码的作用是根据速度值(目前仅称为“ currentValue”)给出一个等待时间,直到下一轮。如果按原样使用代码并进入检查器,则可以将值放入“ currentValue”中,并返回等待时间。这也按照我想要的方式工作。

如果您在代码中查找,我已经注释掉了“升级waitgauge函数”,因为那是问题所在。我想用等待时间并以视觉方式表示它,作为根据返回的等待时间填充到满的量规:

如果返回2.5秒的等待时间,则填充栏将需要2.5秒。

如果返回了4.7秒的等待时间,则需要4.7秒来填充。

我还要提及的是,等待量规将始终保持不变。

我为此工作了11个小时,试图弄清我的最后一天。相当令人沮丧,因为我实际上使它与实践代码一起使用,但是这样做的速度公式要简单得多。急需帮助。

0 个答案:

没有答案