Как задать параметры отключения функций объекта через определенный промежуток времени

Здраствуйте такой вопрос. Я написал код в котором персонаж когда берет предмет(в моем случае молния) ускоряется, но это ускорение остается постоянным, как мне сделать так чтобы ускорение длилось к примеру секунду - полторы секунды?

/Это код объекта который ускоряет игрока

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpeedBoost : MonoBehaviour
{
    public GameObject speedBoost;
    public int itemValue = 5;
    public void OnCollisionEnter(Collision collision)

    {
        PlayerRun PlayerRunScript = collision.gameObject.GetComponent<PlayerRun>();
        StartCoroutine(PlayerRunScript.UpdateSpeedForInterval(5, 3f));
        Destroy(speedBoost);
    
    }
}

/Это код игрока

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System;
using System.Runtime.Serialization;

public class PlayerRun : MonoBehaviour
{
    // Start is called before the first frame update
    public float SpeedPlayer = 5.0f;
    public FixedJoystick joystick;
    public float RightLeftSpeed = 5.0f;
    private int Life = 100;
    public Text Life_State;

    

    void Start()
    {
        print("Start Life " + Life);


    }

    

    // Update is called once per frame
    void Update()
    {
        transform.position += new Vector3(joystick.Direction.x * SpeedPlayer * Time.deltaTime, 0, SpeedPlayer * Time.deltaTime);

    }

    public void updateLife(int puntos)
    {
        Life += puntos;
        print("Current Life " + Life);
        Life_State.text = Life.ToString();
        isAlive();
    }
    private void isAlive()
    {
        if (Life <= 0)
        {
            SceneManager.LoadScene("StartScene", LoadSceneMode.Single);
        }
    }

    public IEnumerator UpdateSpeedForInterval(int speed, float time)
    {
       

        SpeedPlayer += speed;

        yield return new WaitForSeconds(time);

        SpeedPlayer -= speed;
    }
}

Ответы (1 шт):

Автор решения: Сергей Мишин

Например через корутины (https://docs.unity3d.com/ru/2019.4/Manual/Coroutines.html) и метод WaitForSeconds (https://docs.unity3d.com/ScriptReference/WaitForSeconds.html)

IEnumerator UpdateSpeedForCertainTime(int speed, float time) {
    SpeedPlayer += speed;
    
    yield return new WaitForSeconds(time);

    SpeedPlayer -= speed;   
}

void OnCollisionEnter(Collision collision) {
    // .....
    StartCoroutine(PlayerRunScript.UpdateSpeedForInterval(5, 1.5f));    
}
→ Ссылка