调用函数t / s,具有“缓出”效果

时间:2016-04-07 08:43:14

标签: c# unity3d unityscript unity5

这更像是一个数学问题,但如果有人能帮我定义如何编写代码那就太棒了!

目标是以设定的时间间隔重复调用函数。但是需要计算每秒调用间隔,以便它遵循缓出曲线。

所以我希望玩家在变量中输入一个数字,然后将其称为X。

  • X * Time.deltaTime应该给我一个每秒呼叫。
  • 给予X的数字越大,每秒调用次数越快。
  • X的值越高,它对每秒调用间隔的影响越小。

数学并不是我的强项,所以如果有人能帮我定义这段代码,我们将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以使用AnimationCurve这个

public AnimationCurve callPerSecondCurve;

//this is x value on animation curve
public float yourXvar;

void Start(){
    yourXvar = Mathf.Clamp(yourXvar, 0f, 10f); //so that you don't go out of curve range
    CallerFunction();
}

void CallerFunction(){
    float frequency = callPerSecondCurve.Evaluate(yourXvar);

    //exit condition
    if(frequency < 0.01f)
        return;

    float waitTime = 1f / callPerSecondCurve.Evaluate(yourXvar);
    Invoke("CallerFunction", waitTime);
    yourXvar -= waitTime;
    Debug.Log("Bam");

    //call your target function() HERE
}

将动画曲线设置为

Call frequency curve

基本上应该发生的事情是在检查器中输入 yourXvar 并按下播放后,调用CallerFunction()的频率会降低。