最近,作为一名新手程序员,我不知所措。
这是代码:
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个小时,试图弄清我的最后一天。相当令人沮丧,因为我实际上使它与实践代码一起使用,但是这样做的速度公式要简单得多。急需帮助。