سلام و درود خدمت دوستان عزیز و علاقمندان به مباحث آموزشی وب سایت پی وی لرن. با آموزش Unity در خدمتتون هستیم. Rigidbodies در Unity چیست؟ در این بخش از آموزش یونیتی به این موضوع می پردازیم.
مسئله اصلی در مورد برخوردها در فصل گذشته با کد بود. اکنون مقادیر موقعیت GameObject را مستقیماً تغییر خواهیم داد. اگر پلیر در حال فشار دادن یک کلید است ، ما به سادگی می خواهیم مقدار را به موقعیت اضافه کنیم. ما به روشی نیاز داریم تا پلیر به گونه ای حرکت کند که به درستی در برابر مرزها و سایر GameObjects واکنش نشان دهد.
برای این کار ، باید درک کنیم که rigidbodies چیست. Rigidbodies مؤلفه هایی هستند که به GameObject امکان واکنش به فیزیک در زمان واقعی را می دهند. این شامل واکنش به نیروها و گرانش ، جرم ، کشش و حرکت است.
می توانید با کلیک کردن بر روی Add Component و تایپ کردن Rigidbody2D در قسمت جستجو ، یک Rigidbody را به GameObject خود اتچ کنید.
با کلیک بر روی Rigidbody2D کامپوننت به GameObject شما اتچ خواهد شد. اکنون که پیوست شده است ، متوجه خواهید شد که بسیاری از فیلد های جدید باز شده اند.
با تنظیمات پیش فرض ، GameObject به صورت عمودی پایین می آید. برای جلوگیری از این ، Gravity Scale را بر روی ۰ تنظیم کنید.
حال ، پلی کردن بازی تفاوت قابل توجهی را نشان نمی دهد ، زیرا GameObject تاکنون هیچ ارتباطی با کامپوننت فیزیکی نداشته.
برای حل مشکل ، اجازه دهید دوباره کد خود را باز کنیم ، و آن را بازنویسی کنیم.
1 2 3 4 5 6 7 8 9 10 | public class Movement : MonoBehaviour { public float speed; public Rigidbody2D body; // Update is called once per frame void Update() { float h = Input.GetAxisRaw(“Horizontal”); float v = Input.GetAxisRaw(“Vertical”); body.velocity = new Vector2(h * speed, v * speed); } } |
ما می توانیم ببینیم که در اعلان ها یک مرجع برای Rigidbody2D ایجاد کرده ایم و کد به روزرسانی به جای Object’s transform، روی آن مرجع کار می کند. این بدان معنی است که اکنون Rigidbody مسئولیت حرکت را به عهده گرفته است.
ممکن است انتظار داشته باشید که رفرنس بدنه NullReferenceException را قرار دهد، زیرا ما چیزی به آن اختصاص نداده ایم. اگر بازی را مانند قبل کامپایل کرده و اجرا کنید ، خطای زیر را در سمت چپ پایین ویرایشگر دریافت خواهید کرد
برای رفع این مشکل ، بگذارید کامپوننت ایجاد شده توسط اسکریپت را در نظر بگیریم. به یاد داشته باشید که خصوصیات عمومی همان طور که با متغیر سرعت انجام دادیم ، زمینه های خاص خود را در Unity ایجاد می کنند.
سرعت را در یک مقدار بالاتر ، در حدود ۵ تنظیم کنید و بازی را انجام دهید.
برخورد شما اکنون به درستی کار خواهد کرد!
در این بخش از آموزش یونیتی به بررسی Rigidbodies پرداختیم. در بخش بعدی مرزهای برخورد سفارشی رو دنبال خواهیم کرد.
امیر
من ی پروژه line rider ساختم ولی وقتی کاراکتر اصلی بازیم از بالا میخواد بیاد روی خط ، رو خط وای نمیسته و خط رو رد میکنه چجوری میتونم درستش کنم؟
علی
به توپ و خط collider اضافه کن