بخش اول آموزش یونیتی متوسطه (اتصالات فیزیکی)
فهرست مطالب
آخرین به روزرسانی در 29/07/2022
ما قصد شروع دوره ی جدیدی از آموزش یونیتی را داریم.
در فصل قبلی ما به آموزش دوره ی مقدماتی یونیتی در 5 بخش پرداختیم.
در بخش های اولیه سعی در معرفی یونیتی و ابزارهای آن داشتیم و سپس وارد
مراحل اسکریپت نویسی و کارکردن مقدماتی با نورها ، متریال ها و رابط کاربری یونیتی پرداختیم.
در شروع این دوره از آموزش یونیتی ، یعنی دوره ی متوسطه ی یونیتی ما قصد داریم به مباحث پیشرفته تری بپردازیم.
کار خود را با آموزش فیزیک دو بعدیی یونیتی (اتصالات فیزیکی) در یونیتی در یک پروژه ی دو بعدی یونیتی شروع خواهیم کرد.
پس با ما همراه باشید.
پیش نیاز شروع و بخش اول دوره آموزشی متوسطه یونیتی تسلط به دوره ی آموزشی یونیتی مقدماتی می باشد.
برای تسلط به دوره ی آموزشی مقدماتی یونیتی از بخش اول آن باید شروع کنید.
مقدمه
همانطور که بارها و بارها توضیح داده ایم موتور بازی سازی کراس پلتفرم Unity از پشتیبانی قدرتمندی برای ساخت بازی های دو بعدی و سه بعدی برخوردار است.
یکی از اجزای کلیدی یونیتی، اتصالات فیزیکی (physics joints) هستند که به شما امکان میدهند ارتباطات مختلفی بین آبجکت ها در Unity ایجاد کنید.
با استفاده از اتصالات، می توانید ارتباط بین دو جسم را توصیف کنید.
این به این معناست که می توانید فیزیک تقریباً هر جسم چند بخشی را از جمله : درها، سکوهای کشویی، زنجیر ، توپ و … را تنظیم کنید.
آموزش فیزیک دو بعدی یونیتی بر روی استفاده از اتصالات در Unity 2D تمرکز دارد، اگرچه Unity از اتصالات در موتور سه بعدی خود نیز پشتیبانی می کند.
شروع کار
ما در آموزش فیزیک دو بعدی یونیتی از نسخه 5.0.2f1 یونیتی استفاده می کنیم.
لازم به ذکر است اگر از نسخه های دیگری از شاخه 5.x استفاده می کنید، مشکلی در این آموزش و اجرای مواردی که در ادامه خواهیم گفت ندارید.
در مرحله ی بعدی شما باید، 2D_Joints_Starter را دانلود کنید.
فایل را از حالت فشرده خارج کرده و پروژه 2d_Joints_Starter را در Unity باز کنید.
صحنه Demo باید به طور خودکار باز شود، اما در غیر این صورت، می توانید آن را از پوشه Scene پروژه باز کنید.
صحنه باید به صورت زیر باشد :
این صحنه شامل آبجکت های مختلف با کامپوننت فیزیک است، بسیار شبیه به آنچه شما ممکن است در هر بازی پیدا کنید.
با این حال، هیچ یک از این اشکال با اتصالات به هم متصل نمی شوند.
در طول این آموزش، میتوانید هر یک از انواع اتصالات دو بعدی Unity را امتحان کنید تا ببینید چگونه کار میکنند.
با پلی کردن صحنه ؛ برخی از اجسام را می بینید که فوراً به دلیل تأثیر گرانش به زمین سقوط می کنند :
توجه : در حالی که لیبل ها در این صحنه در موقعیت های ثابت هستند، حرکت اشیا بر اساس اندازه نمای بازی شما است.
برای دریافت بهترین نتیجه، نمای بازی خود را در حالت Free Aspect قرار دهید و اندازه آن را در رابط کاربری گرافیکی Unity تنظیم کنید تا زمانی که آبجکت ها و لیبل ها مشابه تصویر بالا ظاهر شوند.
فاصله اتصالات دو بعدی
اولین اتصالی که اضافه می کنید Distance Joint 2D یک هدف بسیار اساسی دارد که این هدف عبارتند از:
حفظ فاصله ثابت دو جسم از هم.
این را روی مربع قرمز و شش ضلعی آبی در سمت چپ بالای صحنه آزمایش خواهید کرد.
Hexagon_Djoint را در Hierarchy انتخاب کنید و یک Distance Joint 2D Component به آن اضافه کنید، همانطور که در زیر نشان داده شده است :
همانطور که در تصویر زیر می بینید، این کامپوننت جدید چندین پارامتر دارد که می توانید آنها را تنظیم کنید تا بهترین نتیجه را برای بازی خود داشته باشید:
نگران نباشید ، به زودی خواهید فهمید که همه این پارامترها چه کاری انجام می دهند و چگونه می توانید آنها را تنظیم کنید.
متوجه خواهید شد که وقتی کامپوننت را به شش ضلعی متصل کردید، یک خط سبز از شش ضلعی تا مرکز صفحه امتداد می یابد. این نقطه مبدا (0,0) است.
صحنه را پلی کنید و به شش ضلعی نگاه کنید :
متوجه خواهید شد که شش ضلعی بر روی صفحه به شکلی پرواز می کند تا زمانی که نزدیک نقطه مبدا متوقف شود، سپس شروع به تکان دادن به جلو و عقب روی اتصال می کند.
رفتار تکان دادن رفتار واقعی مشترک است، اما تکان اولیه انرژی چه مشکلی دارد؟ این رفتار واقعی مورد انتظار است و به زودی در مورد آن یاد خواهید گرفت.
حال به مولفه ی Inspector توجه کنید.
اولین پارامتر Distance Joint 2D Collide Connected است.
این تعیین می کند که آیا دو جسم متصل شده توسط joint (اتصال) می توانند با یکدیگر برخورد کنند یا خیر.
در این مورد، شما نمی خواهید این اتفاق بیفتد، بنابراین آن را علامت نزنید.
پارامتر دوم Connected Rigid Body است.
در حالی که یک انتهای اتصال فاصله همیشه به جسمی که شامل کامپوننت است متصل می ماند، می توانید از این فیلد برای ارسال یک رفرنس به یک آبجکت برای انتهای دیگر joint استفاده کنید.
اگر این فیلد را خالی بگذارید، Unity به سادگی انتهای دیگر مفصل را به یک نقطه ثابت در صحنه متصل می کند.
در این مورد میخواهید Hexagon_Djoint را به Square_Djoint متصل کنید، بنابراین Square_Djoint را به قسمت Connected Rigid Body بکشید :
با تنظیم اتصال و انتخاب Hexagon_Djoint، اکنون باید دو جسم متصل شده توسط joint را در نمای صحنه به صورت زیر مشاهده کنید :
پارامتر بعدی Anchor است که نشان می دهد نقطه پایانی اتصال به GameObject که در فضای مختصات محلی آبجکت مشخص شده است، کجا وصل می شود.
در نمای صحنه، با انتخاب Hexagon_Djoint، میتوانید anchor point را بهعنوان یک دایره آبی پر نشده و در مرکز روی Hexagon_Djoint در تصویر بالا ببینید، در این حالت، مقدار(0، 0) خوب است.
(توجه: اگر در حال حاضر ابزار Transform را در نمای صحنه انتخاب کرده باشید، دایره آبی پر نشده نشان دهنده اولین anchor point اتصال ممکن است پر به نظر برسد.
به همین ترتیب، اگر ابزار Scale را انتخاب کرده باشید، یک مربع سفید خواهید دید.
در هر صورت، دور کردن anchor از (0، 0) نشان می دهد که در واقع یک دایره پر نشده است.)
پارامتر Connected Anchor anchor point انتهای دیگر joint (اتصال) را مشخص می کند.
اگر قسمت Connected Rigid Body خالی باشد، این مقدار در سیستم مختصات صحنه است.
با این حال، هنگامی که بدنه ریگ شده متصل تنظیم می شود، همانطور که اکنون است، مختصات anchor متصل به فضای مختصات لوکال بدنه ریگ شده متصل اشاره دارد.
این نقطه anchor در تصویر بالا به صورت یک دایره آبی جامد در مرکز Square_joint ظاهر می شود.
یک بار دیگر، می توانید این مقدار را در (0، 0) بگذارید.
پنجمین پارامتر Distance Joint 2D همان پارامتری است که نام خود را دارد : Distance. این نام گویای همه چیز است : این پارامتر فاصله بین هر دو آبجکت را نشان می دهد.
در نمای صحنه، می توانید یک خط سبز کوچک را ببینید که خط اتصال دو آبجکت را قطع می کند.
این را می توانید در تصویر زیر مشاهده کنید.
این خط ، فاصله اعمال شده توسط joint را نشان می دهد.
هنگامی که صحنه را پلی می کنید، اتصال Hexagon_Djoint را حرکت می دهد تا Anchor که تعریف کرده اید در نقطه ای باشد که خط کوچک است.
با افزایش یا کاهش، خط به ترتیب بالا یا پایین می رود.
برای اینکه فضای بیشتری برای دیدن joint در حال کار داشته باشید، مانند شکل زیر، Distance را روی 2 قرار دهید:
آخرین پارامتر حداکثر فاصله است.
در صورت فعال بودن، joint (اتصال) تنها حداکثر فاصله را اعمال می کند، به این معنی که آبجکت ها می توانند به یکدیگر نزدیکتر شوند، اما هرگز از مقدار مشخص شده در قسمت Distance دورتر نمی شوند.
در این مثال، شما می خواهید فاصله ثابت شود، بنابراین این پارامتر را غیرفعال کنید.
صحنه را پلی کنید و باید ببینید که شش ضلعی متصل به مربع دیگر از صحنه نمی افتد:
در حالی که این به نوعی مفید است، اتصالات واقعاً فقط زمانی خود را نشان می دهند که یک یا چند اتصال آنها در حال حرکت باشد.
این پروژه حاوی یک اسکریپت مفید است که به شما امکان می دهد آبجکت ها را با ماوس خود بکشید.
Square_Djoint را در Hierarchy انتخاب کنید و Movement را از پوشه Scripts به Inspector بکشید، همانطور که در زیر نشان داده شده است:
صحنه را پلی کنید؛ Square_Djoint را با ماوس به اطراف بکشید تا اتصال خود را در حال عمل ببینید:
در این حالت بر خلاف ظاهر کار در واقع نمی توانید اتصال خود را ببینید.
مطمئناً، نمای صحنه یک خط سبز را نشان می دهد که دو آبجکت را به هم متصل می کند، اما نمای بازی اینطور نیست.
برای درک بهتر آنچه در حال رخ دادن است، این پروژه شامل یک اسکریپت است که یک خط بین دو آبجکت را در زمان پلی ارائه می دهد.
برای تجسم ، Square_Djoint را در Hierarchy انتخاب کنید و Line را از پوشه Scripts به Inspector بکشید:
در مرحله بعد، با کشیدن Square_Djoint و Hexagon_Djoint به Game Object 1 و Game Object 2 در Inspector، به اسکریپت Line بگویید که کجا بکشد، همانطور که در زیر نشان داده شده است:
صحنه خود را پلی کنید. خطی را خواهید دید که این دو آبجکت را به هم متصل می کند:
(نکته: اسکریپت Line یک خط بین موقعیت های دو GameObject می کشد.
در واقع از داده های joint استفاده نمی کند، و به همین دلیل، برخی از تنظیمات joint را به درستی بازتولید نمی کند.
به عنوان مثال، اگر joint فاصله شما یک بدنه ریگ شده را مشخص نکرده باشد،
یا اگر anchor ها در (0، 0) نباشند، خط نمایش داده شده به درستی محل joint را تجسم نخواهد کرد.)
متوجه خواهید شد که مهم نیست Square_Djoint را کجا حرکت دهید، Hexagon_Djoint همیشه در فاصله مشخصی از آن خواهد بود.
صحنه خود را دوباره پلی کنید، فقط این بار ویژگی Max Distance Only مربوط به Distance Joint 2D را بررسی کنید.
این فقط حداکثر فاصله joint را اعمال می کند و به دو جسم اجازه می دهد از یکدیگر عبور کنند.
اکنون وقتی Square_Djoint را حرکت میدهید، رفتار متفاوتی خواهید دید.
اکنون که اتصال Distance را گفتیم، گام بعدی بررسی Springs است.
Spring Joint 2D
Spring Joint 2D به روشی مشابه با distance joints کار می کند.
با این حال، در حالی که distance joints یک فاصله ثابت را اعمال می کنند، اتصالات فنری به یک اتصال کشش وارد می کنند و باعث می شوند که اجسام به گونه ای که گویی توسط فنر به هم متصل شده اند، جهش کنند.
برای مشاهده نحوه عملکرد آنها، Hexagon_Sjoint را در Hierarchy انتخاب کنید و یک آبجکت Spring Joint 2D به آن اضافه کنید.
همانطور که می بینید، این مؤلفه جدید چندین پارامتر دارد که می توانید آنها را تنظیم کنید:
فنر Joint 2D دارای چندین زمینه مشترک با Distance Joint 2D است : Enable Collision، Connected Rigid Body، Anchor و Connected Anchor همگی دقیقاً به همان روشی که برای distance joints انجام می دهند برای فنرها عمل می کنند، بنابراین نیازی به توضیح مجدد در مورد آنها نیست.
قبل از توضیح سایر فیلدها، ابتدا Square_Sjoint را با کشیدن آن از زبانه Hierarchy و انداختن آن بر روی قسمت Connected Rigid Body به فنر متصل کنید:
درست مانند Distance Joint 2D، Spring Joint 2D حاوی یک فیلد Distance است که فاصله ای را که فنر باید سعی کند بین دو جسم حفظ کند را مشخص می کند.
با این حال، در حالی که Distance Joint به شدت این فاصله را اعمال می کنند، اتصالات فنری در اطراف این فاصله به جلو و عقب می پرند و به تدریج در مقدار مشخص شده متوقف می شوند.
فاصله را روی 2 تنظیم کنید:
Damping Ratio درجه suppression for the spring oscillation را مشخص می کند.
اگر بخواهیم دقیق توضیح دهیم به عبارت دیگر، تعیین می کند که آبجکت متصل شده توسط فنر با چه سرعتی استراحت کنند.
مقدار آن از 0 تا 1 متغیر است که 0 کندترین و 1 سریعترین است.
شما می توانید با این مقدار بازی کنید تا بهترین نتیجه را در بازیهای خود به دست آورید، اما فعلاً آن را روی 0 بگذارید تا یک فنر بسیار قوی داشته باشید.
فرکانس نشان دهنده فرکانسی است که در آن فنر در سیکل در ثانیه نوسان می کند.
به عبارت دیگر، تعداد دفعاتی که فنر در هر ثانیه جهش می کند.
این مقدار باید بالاتر از صفر باشد، جایی که صفر به معنای شروع فنر در حالت استراحت است.
مقادیر پایینتر فنرهای کششیتر و مقادیر بالاتر فنرهای محکمتری تولید میکنند.
فرکانس و نسبت میرایی با هم کار می کنند تا رفتار نهایی فنر را ایجاد کنند.
معمولاً باید هر یک از اینها را کمی تغییر دهید تا به نتیجه عالی برای بازی خود برسید.
یک بار دیگر، تعامل ماوس و رندر خط را اضافه خواهید کرد تا به نحوه عملکرد این مفصل کمک کنید.
اسکریپت های Movement و Line را به Square_Sjoint اضافه کنید.
مطمئن شوید که مرجع Game Object 1 و Game Object 2 در کامپوننت Line (Script) روی Square_Sjoint و Hexagon_Sjoint تنظیم شده است:
صحنه خود را پلی کنید. Square_Sjoint را در اطراف صحنه بکشید :
با مقادیر مختلف در هر دو مقدار فرکانس و Dampening بازی کنید تا از نحوه حرکت فنر ایده بگیرید.
در حالی که فاصله و اتصالات فنری مشابه یکدیگر هستند، مورد بعدی (Hinge Joint) ، کاملاً متفاوت است.
Hinge Joint 2D
Hinge Joint 2D کمی متفاوت از دو بعدی است.
این اتصال خاص به یک GameObject با یک Rigidbody اجازه می دهد که حول یک نقطه ثابت بچرخد.
اتصال چرخش صحیح جسم را هنگامی که نیرویی بر جسم ریگ شده تأثیر میگذارد محاسبه میکند.
به این معنی که هیچ اسکریپت یا کد اضافی مورد نیاز نیست.
همانطور که خواهید دید، Hinge Joint چندین گزینه پیکربندی را ارائه می دهند تا بتوانید بدنه های متحرک مختلفی مانند درها، درب های تله ای با وزنه، چرخ های آب و موارد دیگر ایجاد کنید.
در این مثال می خواهیم نشان دهیم، Square_Hjoint (که در واقع یک مستطیل است) زمانی که مقداری وزن روی آن میگذارید، بچرخد.
Square_Hjoint را انتخاب کنید و یک کامپوننت 2 بعدی Joint 2D به آن اضافه کنید:
این کامپوننت شامل تعدادی فیلد جدید به همراه برخی موارد دلخواه قدیمی است:
یک بار دیگر، Collide Connected، Connected Rigidbody، Anchor و Connected Anchor وجود دارد.
این فیلدها همگی مثل قبل کار می کنند.
این بار فیلد Connected Ridigbody را خالی بگذارید تا Joint به نقطه ای از فضا متصل شود.
به یاد بیاورید که وقتی Connected Rigidbody خالی است، مختصات Connected Anchor در سیستم مختصات صحنه قرار دارد.
این بدان معناست که مختصات پیش فرض (0، 0) در این مورد صحیح نیست.
در عوض، با تغییر مقادیر X به 3.5- و Y به 3/2- ،
anchor را در مرکز مستطیل قرار دهید:
پارامترهای بعدی مختص Hinge Joint 2D هستند.
بررسی استفاده از موتور باعث می شود موتور فیزیک نیروی ثابتی را برای چرخاندن اتصال در تلاش برای رسیدن به سرعت مشخص شده اعمال کند.
ما می گوییم “در تلاش”، زیرا جسم ریگ شده ممکن است نیروهای دیگری روی آن وارد شود که چرخش را تسریع یا کندتر کند.
شما سرعت هدف موتور را در قسمت Motor Speed به عنوان مقدار بر حسب درجه بر ثانیه مشخص می کنید.
موتور سعی می کند این سرعت را با اعمال گشتاور به مفصل حفظ کند.
با استفاده از قسمت Maximum Motor Force می توانید حداکثر گشتاوری را که موتور ممکن است اعمال کند مشخص کنید.
هر چه این مقدار بیشتر باشد، موتور در برابر نیروهای خارجی که ممکن است برای متوقف کردن چرخش تلاش کنند، مقاومت بیشتری خواهد کرد.
محدودیتهای استفاده، محدودیتهای چرخش را فعال یا غیرفعال میکند، که چرخش joint را بین مقادیر مشخصشده زاویه پایین و زاویه بالا محدود میکند.
در این مثال، شما نمیخواهید پلتفرم به صورت دایرهای بچرخد، بنابراین Use Limits را فعال کنید و Lower Angle را روی 245- و Upper Angle را روی 0.5 تنظیم کنید:
نمای صحنه میزان چرخش joint را نشان می دهد:
همانطور که در زیر نشان داده شده است، توپ های موجود در صحنه از قبل به گرانش پاسخ می دهند و هنگامی که از صحنه سقوط می کنند، دوباره در موقعیت اصلی خود پدید می آیند:
صحنه خود را پلی کنید. یکی از توپ ها را بکشید و آن را روی Square_Hjoint بیندازید تا ببینید پلت فرم چگونه می چرخد:
همین کار را با توپ های مختلف در صحنه امتحان کنید.
توجه کنید که چگونه توپ های بزرگتر سرعت چرخش را افزایش می دهند.
این به این دلیل است که سه توپ در صحنه هر کدام با جرم متفاوتی ایجاد شده اند.
این نشان می دهد که چگونه Hinge بر اساس نیروی اعمال شده به طور متفاوتی می چرخد.
برای مشاهده عملکرد موتور، Square_Hjoint را در سلسله مراتب و در Inspector، کادر Use Motor را علامت بزنید.
سپس سرعت موتور را روی 500 تنظیم کنید و تیک گزینه Use Limits را بردارید.
بازی خود را پلی کنید اکنون بدون نیاز به چیزی حرکت خواهید کرد.
تیک Use Motor را بردارید و برای بقیه این آموزش تیک Use Limits را بزنید.
اکنون که پلتفرم شما می چرخد، یک slider joint اضافه می کنید تا تعامل بیشتری بر اساس فیزیک ایجاد کنید.
Slider Joint 2D
Slider Joint حرکت جسم را در امتداد یک خط در فضا محدود می کنند.
در این بخش، از مفصل Hinge که ایجاد کرده اید برای شروع حرکت جسم دیگری در امتداد یک Slider Joint استفاده خواهید کرد.
Hexagon_Sljoint را در Hierarchy انتخاب کنید و یک کامپوننت Slider Joint 2D به آن اضافه کنید:
فیلدهای موجود در مولفه Slider Joint 2D مشابه مواردی است که در Hinge Joint دیدید، اما با کمی تغییرات مفهومی.
از آنجایی که Slider Joint به جای حرکت زاویه ای به صورت خطی کار می کنند، سرعت موتور بر حسب واحد در ثانیه اندازه گیری می شود.
به همین ترتیب، به جای محدودیت های زاویه، می توانید محدودیت های ترنسلیت را مشخص کنید.
محدودیتهای ترنسلیت مانند محدودیتهای زاویه عمل میکنند، با این تفاوت که فاصلهای که بدنه ریگ شده میتواند از anchor point متصل باشد را مشخص میکند:
Connected Rigidbody را خالی بگذارید و مقدار Connected Anchor’s X را روی 4.3 و مقدار Y آن را روی 4.7- تنظیم کنید:
می توانید مسیر توصیف شده توسط Joint را در نمای صحنه مطابق شکل زیر مشاهده کنید:
میدان کاملا جدیدی که می بینید Angle است.
این زاویه بین anchor point و anchor point متصل شده را تعیین می کند.
GameObject با Slider Joint در زمان پلی موقعیت خود را تغییر می دهد تا با این زاویه مطابقت داشته باشد.
Angle را روی 45- قرار دهید.
متوجه خواهید شد که یک خط سبز کوچک در نمای صحنه آن زاویه را تکرار می کند.
حالا، بازی خود را پلی کنید.
از آنجایی که می خواهید Hexagon_Sljoint به سمت راست جایی که در صحنه شروع می شود حرکت کند، Angle را دوباره روی 0 تنظیم کنید.
برای دیدن مسیر اتصال در زمان اجرا، اسکریپت Line را به Hexagon_Sljoint اضافه کنید، فیلد 1Game Object آن را روی Hexagon_Sljoint و فیلد Game Object 2 آن را روی Square قرار دهید:
صحنه خود را پلی کنید. چند توپ را روی سکوی Hinge قسمت قبل بیندازید.
پلت فرم باید بچرخد و به Hexagon_Sljoint برخورد کند، که سپس در امتداد مسیر تعریف شده توسط Slider Joint ملی لغزذ.
بسته به سرعت چرخش پلت فرم، شش ضلعی با سرعت های متفاوتی حرکت می کند:
در حالی که می توانید اجسام چرخشی را با Hinge Joint بسازید، اما باید از اتصال Wheel برای شبیه سازی چیزهایی مانند چرخ های ماشین استفاده کنید.
Wheel Joint 2D
Wheel Joint 2d آخرین اتصالی است که در این آموزش بررسی خواهیم کرد.
این یک چرخ غلتان را شبیه سازی می کند که می توانید آن را به یک جسم دیگر متصل کنید، که با فنر تعلیق کامل می شود تا بین چرخ و anchor point دیگر آن مقداری “ give ” ایجاد کند.
این مفصل اساساً برای شبیه سازی چرخ های وسایل نقلیه وجود دارد.
با این حال، در این مثال شما آن را ساده نگه دارید و فقط از آن برای ایجاد یک پلت فرم چرخشی استفاده کنید.
یک کامپوننت دو بعدی Wheel Joint را به Square_WJoint اضافه کنید:
بیشتر فیلدهای این مؤلفه باید آشنا به نظر برسند.
یک تفاوت این است که نباید Connected Rigid Body را تنظیم نشده رها کنید.
اتصال چرخ در این مورد کاری انجام نمی دهد.
برای anchor انداختن پلت فرم خود در صحنه، Connected Rigid Body را روی Hexagon_WJoint قرار دهید:
بخش تعلیق مختص Wheel Joint است.
این شامل سه زمینه است: نسبت میرایی، فرکانس و زاویه.
دو مورد اول درست مانند کار در Spring Joint 2D کار می کنند، در حالی که Angle مانند Slider Joint 2D کار می کند.
این سه ویژگی با هم کار می کنند تا فنری را توصیف کنند که چرخ را از وسیله نقلیه anchor خود جدا نگه می دارد و در جهت خاصی جهت گیری می کند.
پخش صحنه؛ یکی از توپ ها را روی Square_Wjoint، نزدیک مرکز سکو، بیندازید.
شما باید ببینید که پلت فرم به سمت پایین حرکت می کند و همراه با حرکت چرخشی آن به سمت بالا باز می گردد.
نتیجه نهایی تنظیمات Suspension :
برای اینکه Wheel Joint را واقعاً در حال عمل ببینید، با انتخاب File \ New Scene یک صحنه جدید ایجاد کنید.
از پوشه Sprites، یک مربع را به نمای صحنه بکشید.
موقعیت Transform را روی (3.6-، 7.72-، 0) تنظیم کنید.
مقیاس را روی (14.43، 6.50، 1) قرار دهید.
روی دکمه Add Component کلیک کنید و یک کامپوننت Box Collider 2D به آن بدهید.
اندازه ها را روی :
X: 2.29
Y: 2.31
قرار دهید.
اسمش را بگذارید : ground باید به شکل زیر باشد:
یک GameObject خالی جدید ایجاد کنید. اسمش را بگذارید car و موقعیت را روی (6.4،1.13،0) تنظیم کنید.
از پوشه اسپرایت Car sprite را به Car GameObject بکشید.
اسمش را بگذارید: body
transform را به صورت زیر تنظیم کنید :
(0، 0، 0)
از پوشه اسپرایت ، Wheel sprite را به Car GameObject بکشید.
همین کار را برای هر دو چرخ انجام دهید و آنها را در wells خالی چرخ قرار دهید.
آنها را صدا کنید: FrontWheel و BackWheel.
سپس کامپوننت های Rigidbody 2D را روی Body، چرخ جلو و BackWheel اضافه کنید.
در حالی که بدنه های ریگ شده خود در جای خود قرار دارند، یک Collider دایره ای 2D را به چرخ های جلویی و پشتی اضافه کنید.
یک Collider چند ضلعی 2 بعدی به بدنه اضافه کنید.
هنگامی که Car GameObject را انتخاب می کنید، Collider های شما به شکل زیر خواهند بود:
در مرحله بعد Body را در Inspector انتخاب کنید و روی دکمه Edit Collider کلیک کنید.
Collider چند ضلعی را به دور چرخ بکشید تا چرخ ها با آنها برخورد نکنند.
بدنه را در Inspector انتخاب کنید. یک Wheel Joint 2D به آن اضافه کنید.
در Connected Rigid Body، FrontWheel ، property را اضافه کنید.
anchor را در property به صورت زیر تعریف کنید :
X : -0.98
Y : -0.78
تیک گزینه Use Motor را بزنید و سرعت موتور را روی 500 تنظیم کنید.
یکی دیگر از Wheel Joint 2D را به آن اضافه کنید.
در Connected Rigid Body، BackWheel ، property را اضافه کنید.
Anchor را در property به صورت زیر تعریف کنید :
X : 1.15
Y : -0.84
تیک گزینه Use Motor را بزنید و سرعت موتور را روی 500 تنظیم کنید.
با موتور آماده به کار، صحنه خود را پلی کنید.
مهرشاد شادان مهر
مدرس سئو ، طراح سایت ، انیماتور
قهرمان زندگی شما در چند سال آینده ی شما می باشد