无限背景速度Unity2D

时间:2016-01-10 19:23:31

标签: c# unity3d scroll infinite-loop unity5

我对无限背景及其速度感到疯狂。

基本上我想平稳地控制速度以增加/减少它。

我怎样才能做到这一点?

void Start () {
    speed = 0.4f;
}

void Update () {
    float x = Mathf.Repeat((Time.time * speed),1);
    GetComponent<Renderer>().material.mainTextureOffset = new Vector2 (x, 0f);
}

public void IncreaseSpeed(float newSpeed){
    ?
}

public void DecreaseSpeed(float newSpeed){
    ?
}

1 个答案:

答案 0 :(得分:1)

根据您的要求,我认为您无需为增加和降低速度提供单独的功能。相反,只需要设置一个目标速度,然后根据需要每帧增加/减少实际速度,直到达到目标。

示例实现可能如下所示:

float speed = 0;
float targetSpeed = 0;
float speedStepSize = 0.1f; // Change as needed based on how quickly speed should change

void Start () {
    targetSpeed = 0.4f;
}

void Update () {
    float x = Mathf.Repeat((Time.time * speed),1);
    GetComponent<Renderer>().material.mainTextureOffset = new Vector2 (x, 0f);

    if (targetSpeed < speed) {
        speed = Mathf.Max(speed - speedStepSize, targetSpeed);
    }
    else if (targetSpeed > speed){
        speed = Mathf.Min(speed + speedStepSize, targetSpeed);
    }
}

public void SetTargetSpeed(float newSpeed){
    targetSpeed = newSpeed;
}

(如果您不希望速度绑定到帧速率,也可以将步长乘以Time.deltaTime。)

希望这有帮助!如果您有任何问题,请告诉我。