Time.delta là gì?
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ị
Đâ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);
}
}
Dưới đây là video trong seri Hướng dẫn làm game bắn vịt clone có sử dụng Time.deltatime:
<iframe width="320" height="266" data-thumbnail-src="https://i.ytimg.com/vi/3hNwjvYEd-E/0.jpg" src="https://www.youtube.com/embed/3hNwjvYEd-E?feature=player_embedded" frameborder="0" allowfullscreen></iframe>