خوب فرض کنید که شما یه سیستم خیلی خوب دارید و دارید باهاش بازی میسازید و وقتی که دارید روی سیستم تون همه چیز رو تست میکنید و حرکت ها رو نگاه میکنید همه چی به نظرتون اوکی ولی همین بازی وقتی که روی سیستم های ضعیف بخواد اجرا بشه سرعت و اجراش متفاوته، خوب حالا چی کار کنیم ؟ چون ما نمیخوایم توی هر سیستم یه جور متفاوت اجرا بشه ، میخوایم همه جا یکسان و با سرعت یکسان اجرا بشه.
فقط نکته ای که میمونه اینه که خوب دلیل این قضیه چیه ؟ دلیلش اینه که ما وقتی که داریم توی کلاس update یه کاری رو میخوایم انجام بدیم اون میاد توی هر فریم از اجرا میاد اون متد رو اجرا میکنه؛ حالا سیستم هایی که قوی ترین و فریم های بیشتر رو در واحد یک زمان ثابت اجرا میکنن تا سیستم های ضعیف و همین قضیه باعث تفاوت اجرا و سرعت اجرا در سیستم هاست.
حالا بیایم همین قضیه رو با مثال ببریم جلو :

این رو در نظر بگیرید که کند ترین کامپیوتر برای این که 1 یونیت به سمت چپ ببره
10 فریم در 1 ثانیه که 0.1 ثانیه برای هر فریم طول میکشه، چطوری ؟
0.1*10 = 1 ثانیه
برای کامپیوتر های قوی تر هم همینطوری محاسبه میکنیم، حالا بعدش میایم و اینها رو ضرب در اون تعداد یونت ای که قراره حرکت کنه میکنیم که میشه :
1*10*0.1 = 1
حالا برای این که کاری کنیم این وابستگی بین سرعت اجرا و سیستم نباشه میایم از time.DeltaTime استفاده میکنیم: (که میشه همون عدد های زرد رنگی که توی عکس بالا نوشته شده )
بیاید اینطوری معنی کنیم که اگر اون عدد زرده که میشه deltaTime هستش ضرب در اون اعداد قبلی نکنیم ، توی کامپیوتر های ضعیف میزان حرکت برای 1 یونت میشه 10 تا در هر ثانیه و برای کامپیوتر های قوی میشه 100 تا در هر ثانیه
خوب این یعنی که 1 یونیت من توی 1 ثانیه توی کامپیوتر ضعیف 10 تا میشه distance اش
و توی کامپیوتر های قوی 100 تا میره
که یعنی 10 برابر کامپیوتر ضعیف سرعتش(جا به جای شدنش) بیشتره، حالا برای این که این ها رو یکسان سازی کنیم ضرب در deltaTime میکنیم که هر دو تاشون برای 1 یونیت یک distance یکسان رو طی کنن در ثانیه.
// Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { float xValue = Input.GetAxis("Horizontal")* Time.deltaTime ; float zValue = Input.GetAxis("Vertical")* Time.deltaTime ; transform.Translate(xValue,0,zValue); }