| کانال توسعهدهندگان بازی |
🎮 کنترل حرکت نرم با deltaTime
یکی از اشتباههای رایج تو بازیهای ۲بعدی Unity اینه که سرعت حرکت یا انیمیشن رو مستقیم به frame rate گره میزنیم. روی سیستم قوی، همهچی اوکیه؛ ولی روی سیستم ضعیف، کاراکتر کند میشه یا حرکتها تیکتیک میخوره 😅
راهحل سادهست: همیشه حرکت، فیزیک ساده و انیمیشنهای محاسباتی رو به Time.deltaTime ضرب کن تا وابسته به فریم نباشن.
🔹 مثال بد (وابسته به فریم):
void Update()
{
transform.position += Vector3.right * 5f;
}
روی ۳۰fps کاراکتر کندتر از ۱۴۴fps حرکت میکنه، چون در هر فریم ۵ واحد میره جلو.
🔹 مثال درست (frame independent):
void Update()
{
float speed = 5f; // units per second
transform.position += Vector3.right * speed * Time.deltaTime;
}
حالا speed بر حسب «واحد در ثانیه» تعریف شده و deltaTime تضمین میکنه در هر ثانیه تقریباً همون مقدار طی بشه، چه ۳۰fps باشه چه ۱۲۰fps ✅
📌 نکتهها:
- برای حرکتها، lerp دستی، fadeها و هر چیز «وابسته به زمان»، از Time.deltaTime استفاده کن.
- برای فیزیک Rigidbody بهتره منطق اصلی تو FixedUpdate باشه و از Time.fixedDeltaTime کمک بگیری.
- اگر بازی Pause میشه، میشه از Time.unscaledDeltaTime برای UI Animationهایی که نباید متوقف بشن استفاده کرد.
این ریزهکاری ساده کمک میکنه بازی روی دستگاههای مختلف تجربهای یکسان و حرفهای داشته باشه 🚀
منبع رسمی Unity:
Unity Time.deltaTime Docs
🔖 #GameDev #بازیسازی #Unity #deltaTime #performance #movement #2D #frame_rate
👤 Developix
💎 Channel: @DevelopixGame
2 · 398 ·