transform چیست ؟

transform.translate جیست و چگونه کار میکند ؟

time.deltatime چیست و چگونه سرعت حرکت را ثابت میکند ؟

مکان دقیق GameObject ها در یونیتی در component به اسم transform نمایش داده میشود.

این کامپوننت به تمام ابجکت های داخل صفحه داده میشود.

میتوانید با استفاده از ترنسفورم transform به position(مختصات) rotation (زاویه) و scale(ابعاد) هر گیم ابجکت GameObject دسترسی داشته باشید.

                                   Transform

یکی از اصلی ترین کد های ترنسفورم  translate ترنسلیت است که برای حرکت دادن ابجکت در کد از ان استفاده میشود.

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class TransformTranslate : MonoBehaviour {

   public float speed;

   void Update()

   {

      transform.Translate(new Vector3(speed * Time.deltaTime, 0, 0));

   }

}

با دادن این کد به گیم ابجک ابجکت در هر ثانیه به مقدار مشخصی ( speed ) به جهت x حرکت میکند.

تابع update در هر فریم یک بار اجرا میشود و گیم ابجکت را حرکت میدهد اما اگر تعداد فریم یک نفر 120 و دیگری 30 باشد کسی که با فریم ریت بالاتر یعنی 120 فریم بازی میکند 4 برابر سریع تر حرکت میکند پس باید حرکت های داخل تابع update را در time.deltatime ضرب کنیم که این کار باعث جلو گیری از اختلاف بین نفرات میشود.

فرض کنید یک نفر 120 فریم دریافت میکند و دیگری 30 فریم برای نفر اول time.deltatime عدد 1 و برای نفر دوم تبدیل به عدد 4 میشود.

 

برای دادن کد به ابجکت آن را انتخاب کرده و کد را با موس گرفته و روی ابجکت رها کنید (drag and drop).