• 1399/10/17

delta time چیه ؟ :

سلام میشه یه بار دیگه توضیح بدید این موضوع delta time رو

  • 1399/10/17
  • ساعت 11:06

سلام

دلتاتایم فاصله اجرا شدن فریم جاری و قبلی رو میگه. اگه شنیده باشید میگن فلان کامپیوتر فلان بازی رو با 120FPS بالا میاره این  یعنی اون کامپیوتر در هر ثانیه 120 فریم اجرا میکنه و خب عدد بزرگیه و به طور مثال  اگه ما در فریم دوم باشیم دلتاتایم فاصله بین فریم اول و دوم رو میگه که معمولا عددی خیلی کوچیک هست

 

به چه دردی میخوره؟!

خب همونجور که میدونید سیستم های قوی و ضعیف با هم متفاوتن مثلا سیستمی که الان گفتیم که 120 فریم اجرا میکرد و یک سیستم ضعیف که 20 فریم اجرا میکنه(در ثانیه) با هم دیگه خیلی تفاوت دارن مثلا شما اگه داخل تابع آپدیت در هر فریم n واحد گیم آبجکتتون رو حرکت بدید در یک سیستم ضعیف ممکنه 20n جابجابشه و در یک سیسستم قوی 120n !!! ، خب برای اینکه همه چیز در همه کامپیوتر ها یکسان باشه میتونیم این حرکت رو به جای وابسطه بودن به فریم به زمان (ثانیه) وابسطه کنیم و از اون جایی که ثانیه همه جا یکسانه در همه سیستم ها نتیجه یکسانی خواهیم داشت

 

حالا چجوری همچین کاری کنیم؟!

کاری که توی دوره هم توضیح داده شد مثلا همون مثال بالارو بگیم یک گیم آبجکت داریم که میخوایم n واحد جابجا اش کنیم حالا میایم و از اون دلتاتایم استفاده میکنیم که مشکلمون رو حل کنه

با ضرب کردن دلتاتایم در n  میتونیم وابسطه به زمانش کنیم(فقط توجه داشته باشید که در تاع آپدیت باید همچین کاری انجام بدید و در تابع FixedUpdate باید از FixedDeltaTime استفاده کنید)

 

اگر هم براتون سوال شده که چجوری با ضرب در یک مقدار میتونیم به یک نتیجه یکسان برسیم یه چیزی به این شکل میشه

خب اگه فریم بالا باشه مثلا 120 در یک ثانیه دلتاتایم خیلی عدد کوچکی میشه در حد هزارم و اینا ولی اگه یه عدد کوچیک تری داشته باشیم مثل 20 فریم بر ثانیه دلتاتایم از قبلی بزرگ تره در حد صدم و اینا

 

خب یه نمونه اش رو انجام بدیم بهتر بفهمید

به طور مثال بازی با FPS 120 مثلا دلتاتایم 0.008333 رو داره و در حالت FPS20 دلتاتایم 0.05 رو داره

 

حالا با ضرب این ها به چه نتیجه ای میرسیم؟

 

120 * 0.008 = 0.999999996
20 * 0.05 = 1

خب میبینید که تقریبا با هم برا بر هستن (البته دقیقا برابر هستن ولی چون دوره گردش داشت ننوشتم) 

 

الان با این نتیجه همیشه ما وابسطه به زمان هستیم نه به فریم

 

حالا اگه باز هم براتون سوال شد که اگه در یک فریم بازی هنگ کنه چی خب خیلی سخت نیست اون فریم دلتاتایم بیشتری رو میگیره و با ضرب کردن در FPS بازی باز هم همون نتیجه رو خواهیم داشت
 

امید وارم گیج نشده باشید...

اطلاعات بیشتر در سایت خود یونیتی.


  • 1399/10/18
  • ساعت 01:50

مرسی از توضیحات خوب و کاملتون واقعا ممنونم خیلی لطف کردید


logo-enamadlogo-samandehi