رفتن به مطلب

حرکت در یونیتی ف1 ق1


Mr.Hossein

ارسال‌های توصیه شده

در یونیتی دستورات زیادی برای حرکت اجسام تعبیه شده است که کاربر با توجه به نیاز خود می تواند از آنها استفاده نماید. به برخی از ساده ترین و در عین حال کاربردی ترین دستورات در این بخش اشاره خواهد شد.

 

 اگر بخواهیم ساده ترین روش حرکت در #یونیتی را بیان نماییم می توان به پارامتر position از #کامپوننت transform اشاره کرد. به طور مثال دستور زیر آبجکت مورد نظر را با سرعت Speed حرکت می دهد.

 

GO.transform.position += transform.forward*speed;

 

پارامتر position یک مقدار Vector3 بوده و می توان آن را جهت تعیین موقعیت دقیق یک آبجکت استفاده کرد. مثلاً طبق دستور زیر/? [#سی_شارپ]

 

GO.transform.position= new Vector3(x,y,z);

 

 با فرض اینکه پارامترهای xyz هر کدام مقدار مورد نظر از موقعیت جدید آبجکت باشد، دستور فوق آبجکت را در موقعیت داده شده قرار می دهد.

 

با استفاده از دستور Translate نیز می توان یک آبجکت را حرکت داد. این دستور یک مقدار Vector3 [بردار سه بعدی به منظور مشخص شدن طول و جهت حرکت] دریافت کرده و آبجکت را طبق آن حرکت می دهد. مثلاً دستور زیر آبجکت GO را با سرعت [یا به طول] speed و در جهت forward (روبرو) حرکت می دهد (دقیقاً مانند دستور اول)

GO.transform.Translate(transform.forward*speed);

دستورات بیان شده برای حرکت (تغییر موقعیت) یک آبجکت تاکنون از هیچ قانون فیزیکی (مثل شتاب) برای حرکت اجسام بهره نمی برند. یعنی در واقع اگر دستورات بیان شده را در توابع Update استفاده نماییم، #آبجکت مورد نظر با یک سرعت ثابت حرکت می کند، در صورتی که بخواهیم برای حرکت آبجکت از قوانین فیزیک استفاده نماییم، می توان از #کامپوننت Rigidbody استفاده کرد. این #کامپوننت معرف همگان هست بنابراین از تکرار مطالب پرهیز خواهد شد.

با استفاده از این #کامپوننت در صورتی که بخواهیم آبجکت مورد نظر با شتاب حرکت کند (مانند پرتاپ شدن تیر یا حرکت یک خودرو) می توانیم از دو دستور velocity و AddForce این کامپوننت استفاده کرد.

یادآوری

 دستور velocity یک پارامتر از #کامپوننت Rigidbody می باشد که در مقابل خود یک مقدار Vector3 [شامل طول و جهت وارد شدن حرکت با شتاب] دریافت می کند. دستور حرکت یک آبجکت [با شتاب] با سرعت speed و در جهت روبرو با استفاده از پارامتر velocity می تواند مانند زیر باشد.?

GO.GetComponent<Rigidbody> ().velocity=transform.forward*speed;

همچنین دستور دیگری نیز توسط این کامپوننت پشتیبانی می شود، AddForce است. این تابع یک نیرو در جهت داده شده در پارامتر اولش به #آبجکت مورد نظر وارد می کند و زمانی که وارد شدن نیرو ممتد باشد مانند این است که آبجکت مورد نظر در حال حرکت است (از این دستور در فیلم آموزشی حرکت توپ استفاده گردید تا توپ حالت غلطان نیز داشته باشد)

GO.GetComponent<Rigidbody> ().AddForce(transform.forward*speed);

دستور فوق نیز یک نیرو در جهت روبرو به #آبجکت مورد نظر به میزان speed وارد می کند. این دستور برای حرکت آبجکت هایی مثل Sphare بسیار مناسب و کاربردی است.

در تمامی دستورات بیان شده در آموزش های اخیر منظور از GO همان GameObject مورد نظر است که قصد حرکت دادن آن را داریم.

 

 

ویرایش شده توسط Mr.Hossein
لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز اینجا انجمن آموزش سی شارپ یونیتی نیست. آموزش های بی ربط نذارید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...