Time.delta trong Unity3D là gì?

Time.delta trong Unity3D là gì?

Author
Khoa Nguyen
Published
January 1, 2016
Category
Kiến thức
Unity3D
Time.delta là khoảng thời gian giữa 2 frame. Khi bạn cộng hoặc trừ giá trị bất khì trong khi frame thay đổi (trong hàm Update/FixedUpdate) thì hãy nên nhân giá trị đó với Time.deltatime. Tại sao? Hãy cùng xem qua ví dụ sau nhé.
public float speed = 5f;
Giả sử mình muốn Player di chuyển trái/phải với speed = 5f. Nếu không nhân speed với Time.deltatime
thì Player chỉ di chuyển được tới những ô cách nó 5 đơn vị trên trục tọa độ mà thôi. Hay nói cách khác là Mỗi frame Player dịch sang trái/phải 5 đơn khi không nhânTime.deltatime.
Ngược lại, nếu nhân speed với Time.deltatime thì Mỗi giây Player dịch chuyển 5 đơn vị
notion image
Đây là code hoàn chỉnh trong ví dụ này, bạn hãy thử bỏ nhân Time.deltatime và cảm nhận nhé.
public float speed = 5f; // Update is called once per frame void Update () { // Mỗi frame Player dịch sang trái 5m khi không dùng Time.deltatime // Mỗi giây Player dịch sang trái 5m có dùng Time.deltatime Debug.Log(Time.deltaTime); if (Input.GetKey(KeyCode.LeftArrow)) { transform.position += new Vector3(-speed * Time.deltaTime, 0, 0); } // Mỗi frame Player dịch sang phải 5m khi không dùng Time.deltatime // Mỗi giây Player dịch sang phải 5m có dùng Time.deltatime else if (Input.GetKey(KeyCode.RightArrow)) { transform.position += new Vector3(speed * Time.deltaTime, 0, 0); } }