فیزیک در کنستراکت ۲: نیرو، ضربه، گشتاور و اتّصال
|بسم الله الرّحمن الرّحیم
سلام. یکی از مهمترین ویژگیها و قدرتهای کنستراکت ۲ فیزیک ساده و قوی آن است که بر پایهی Box2D بنا شده است.
مهمترین جذابیت فیزیک در کنستراکت ۲ دستکاری اشیاء میباشد. با کمک نیروها، ضربهها و اتّصالها میتوانید سرعت اشیاء را افزایش دهید، آنها را به هم اصابت دهید و… . ما در این آموزش یاد میگیریم که چه طور این کارها را انجام دهیم. برای دانلود این آموزش از لینک زیر استفاده کنید. اگر هم میخواهید این آموزش را به صورت آنلاین مطالعه کنید به «بیشتر بخوانید» مراجعه کنید.
فیزیک در کنستراکت ۲: نیرو، ضربه، گشتاور و اتّصالها (5295 downloads)
مقدّمه:
اگر قبلاً آموزش “فیزیک در کنستراکت 2: مفاهیم اوّلیّه” را نخواندهاید، پیشنهاد میکنیم ابتدا آن را مطالعه کنید. در آن آموزش هر چیزی را که قبل از یادگیری نیروها، ضربهها و اتّصالها باید بدانید گفتهایم.
مهمترین جذابیت فیزیک دستکاری اشیاء میباشد. با کمک نیروها، ضربهها و اتّصالها میتوانید سرعت اشیاء را افزایش دهید، آنها را به هم اصابت دهید و… . ما در این آموزش یاد میگیریم که چه طور این کارها را انجام دهیم.
نیرو، ضربه و اتّصال چیست؟
نیرو[1]: به هر اثری که باعث تغییر سرعت یا جهت جسم شود نیرو میگوییم.[2] معمولاً برای اینکه سرعت اشیاء را در جهتی خاص زیاد کنید نیرو را در یک بازهی زمانی طولانی به آن اعمال میکنید. مثلاً جاذبه نیرویی دائمی است که جهتش به سمت پایین میباشد.
ضربه[3]: مثل این میماند که ضربهای ناگهانی به شیء وارد شود. اگر در بازیتان توپی به یک خفّاش برخورد کند باید به جای اعمال نیرو ضربه وارد کنید. تفاوت اصلی بین ضربه و نیرو در این است که معمولاً نیروها در یک بازهی زمانی طولانی اعمال میشوند، در حالی که ضربهها در یک لحظه اعمال میشوند. نیروها باعث میشوند که اشیاء به مرور زمان سرعت بگیرند، ولی ضربهها سرعت آنها را فوراً زیاد میکنند.
گشتاور[4]: یک نیروی چرخشی است. یعنی اینکه به جای افزایش سرعت اشیاء به سمتی خاص، سرعت چرخش آنها را به تدریج زیاد میکند.
اتّصال[5]: حرکت دو شیء را محدود میکند، به عبارت دیگر دو شیء را با روشهای مختلف به هم وصل میکند. این اشیاء بعد از متّصل شدن هنوز هم میتوانند به طور مستقل آزادانه بچرخند. امّا در حرکت اینگونه نیستند چون در یک نقطه به هم متصلاند.
چگونه از نیروها، ضربهها، گشتاور و اتّصالها استفاده کنیم؟
رفتار فیزیک به شیئی که آن را دارد تعدادی اکشن اضافه میکند. شما میتوانید این اکشنهای اضافی را در بین سایر اکشنهای معمولی آن شیء پیدا کنید.
در حالت عادی شما باید نیروها و گشتاور را در شرطهای “ترو[6]” مثل is left button down و ضربهها را در ایونتهای “تریگر[7]” مثل collision with an object وارد کنید، و اتّصالها را در هنگام شروع لیوت یا بعد از ایجاد شیئی جدید به وجود آورید.
نیروها
هنگام وارد کردن نیرو، میتوانید اندازه (قدرت) و جهت نیرو را مشخّص کنید، همچنین میتوانید نقطهای را روی شیء تعیین کنید تا نیرو از آنجا وارد شود.
برای وارد کردن نیرو سه اکشن وجود دارد. در اصل همهی آنها یک کار انجام میدهند. امّا بعضی از آنها یک سری محاسبات را پشت پرده انجام میدهند تا مشخّص شدن نیروی شما ساده تر شود! حالا به معرّفی این 3 اکشن میپردازیم.
۱. Apply force: با این اکشن میتوانید مؤلّفهی X و Y بردار نیرو را به صورت جداگانه وارد کنید.
۲. Apply force at angle: با این اکشن اندازهی نیرو (قدرت) و یک زاویه را وارد میکنید. (بعد خود نرم افزار زحمت میکشد و مؤلّفههای X و Y را در پشت پرده محاسبه میکند!)
۳. Apply force towards position: با این اکشن اندازهی نیرو (قدرت) و مختصات یک مکان را وارد میکنیم (بعد نرم افزار مؤلّفههای X و Y را محاسبه میکند)
تصویر زیر بردار یک نیرو را روی دزد دریایی نشان میدهد.
قدرت نیرو (اندازهی پیکان)، سوم قدرت نیرو و مختصات یک نقطه که پیکان به سمت آن اشاره میکند. این نیرو را از هر سه روش میتوان ایجاد کرد. امّا استفاده از هرکدام در موقعیّت خاص خود راحتتر است.
نقطهی ابتدای بردار نیرو
شما میتوانید هنگام وارد کردن نیرو یک ایمیج پوینت را انتخاب کنید. با اینکار میتوانید از نقطهای متفاوت بردار نیرو را شروع کنید. به طور پیشفرض ابتدای بردار نیرو از نقطهی مبدأ است که به طور پیشفرض در وسط شیء قرار دارد. در تصویر بالا نقطهی آبیرنگ که در وسط دزد دریایی قرار دارد ابتدای بردار نیرو است.
فرض کنید بخواهیم دزد دریایی به جای نقطهی مبدأ از طریق چنگک خود نیرو را وارد کند (مثلاً با چنگکش چیزی را هل دهد)، میتوانید در ویرایشگر تصویر یک ایمیج پوینت روی چنگک قرار دهید. بعد نام یا شمارهی ایمیج پوینت را در یکی از اکشنهای اعمال نیرو وارد کنید. حالا از این به بعد نیرو از طریق چنگک وارد میشود.
در اینجا یک سورس وجود دارد که تفاوت این دو حالت را نشان میدهد. وقتی نیرویی را از گوشهی یک شیء وارد کنید احتمال چرخش و حرکت شیء نسبت به وقتیکه آن نیرو را از جلوی شیء وارد کنید بیشتر میشود. نیروهایی که از وسط شیء وارد میشوند معمولاً باعث میشوند شیء مورد نظر حالت شناور داشته باشد.
ضربهها
اکشنهای وارد کردن ضربه بسیار شبیه به اکشنهای وارد کردن نیرو هستند، چون میتوانید یک ضربه را با مؤلفههای X و Y یا در جهت زاویه یا به سمت مکانی خاص وارد کنید. همچنین میتوانید ایمیج پوینتی را به عنوان نقطهای که ضربه از آنجا وارد میشود مشخّص کنید. وارد کردن ضربه از گوشههای یک شیء احتمال چرخش آن را بیشتر میکند.
ضربهها ناگهانی هستند، به همین دلیل باید از آنها فقط در ایونتهای تریگر مثل on collision with an object استفاده کنید.
گشتاور
گشتاور نیرویی چرخشی است. برای گشتاور به جای وارد کردن مؤلفههای X و Y، به راحتی فقط یک عدد وارد میکنید. اگر مقدار گشتاور عددی مثبت باشد، شیء در جهت عقربههای ساعت شتاب میگیرد ولی گشتاور منفی، شیء را در خلاف جهت عقربههای ساعت شتاب میدهد.
گشتاور سرعت زاویهای[8] شیء را تغییر میدهد. سرعت زاویهای مشخص میکند که شیء در هر ثانیه چند درجه بچرخد. سرعت زاویهای هم مثل گشتاور اگر مثبت باشد شیء را در جهت عقربههای ساعت و اگر منفی باشد در خلاف جهت عقربههای ساعت حرکت میدهد.
شما میتوانید گشتاور را به سمت زاویهای خاص وارد کنید. ولی نمیتوانید گشتاور را از مکانی خاص آغاز کنید، چون چرخش بر تمام شیء اثر میگذارد.
اتّصالها
در فیزیک دو نوع اتّصال داریم که به توضیح هر یک میپردازیم.
۱. اتّصال نزدیک[۹]
اتّصال نزدیک مثل مَفصل است، در این نوع اتّصال شیء مورد نظر به شیء دیگر میچسبد، هر کدام از دو شیء به هم چسبیده میتوانند آزادانه بچرخند، امّا در یک نقطه به هم متّصل هستند. برای این که این مطلب برایتان جا بیفتد مثال Physics revolute joint را از مثالهای همراه کنستراکت 2 مشاهده نمایید. برای ایجاد اتّصالهای نزدیک از اکشن Create revolute joint استفاده میشود.
کافیست فقط یکبار اتّصال ایجاد شود، مثلاً در شروع لیوت، یا موقعی که اشیاء به وجود میآیند، یا وقتی که میخواهید آنها را به هم وصل کنید، بعد از آن، اشیاء متّصل شده همیشه متّصل باقی خواهند ماند. شما میتوانید ایمیج پوینتی را روی یکی از اشیاء مشخص کنید تا از آن نقطه به هم متّصل شوند، درضمن نیازی به انتخاب ایمیج پوینتی روی شیء دیگر ندارید چون اشیاء در وضعیّتی که نسبت به هم قرار دارند به هم وصل میشوند. پس قبل از استفاده از اکشن Create revolute joint مطمئن شوید اشیاء در وضعیّت درستی نسبت به هم قرار گرفتهاند.
۲. اتّصال دور[۱۰]
اتصال از راه دور باعث میشود اشیاء طوری عمل کنند که انگار به وسیلهی یک میلهی محکم به هم وصل شده اند. فاصلهی بین اشیائی که در این حالت به هم وصل شدهاند همیشه ثابت است و تغییر نمیکند، با این حال آنها میتوانند به دور نقطهی اتّصالشان بچرخند. برای اینکه مطلب واضحتر شود مثال Physics – distant joint را از مثالهای همراه کنستراکت 2 ببیند. اتّصالهای دور با اکشن Create distance joint به وجود میآیند.
توجّه داشته باشید میلهی متصلکننده به صورت خودکار نمایش داده نمیشود! اگر خودتان از این اکشن استفاده کنید، میلهای که قابل دیدن باشد نمیبینید. با این حال اشیاء طوری عمل میکنند که انگار با یک میله به یکدیگر وصل شدهاند. در تصویر بالا و همچنین مثال Physics – distant joint برای نمایش میله از یک اسپرایت استفاده شده است، چون با این کار درک نحوهی عملکرد اتّصال راحت تر میشود، شما هم بهتر است همین کار را در بازی خود انجام دهید، اگر این کار را انجام ندهید در بازیتان اشیائی خواهید داشت که با میلهای نامرئی به هم وصل شدهاند و این موضوع میتواند عجیب به نظر برسد.
شما میتوانید برای هر کدام از دو شیئی که به هم وصل میشوند به صورت مجزّا یک ایمیج پوینت انتخاب کنید. در پارامترهای این اکشن، This image point به ایمیج پوینت روی شیء فیزیکی مورد نظر اشاره دارد، و That image point به ایمیج پوینت روی شیء دیگر. با این کار میتوانید برای مثال لبههای دو شیء را به هم وصل کنید.
حال به توضیح Damping ratio[11] و Spring frequency[12] در پارامترهای این اکشن میپردازیم. Spring frequency باعث میشود که میلهی متّصل کننده مانند فنری بزرگ عمل کند. اگر مقدار آن را به 4 هرتز تنظیم کنید و بعد یکی از دو شیئی که به هم وصلاند به شیء دیگری برخورد کند، اتّصال بین دو شیء کمی به عقب و جلو جهش میکند (مثل فنر)، حدود 4 نوسان در هر ثانیه. Damping ratio سرعت کاهش نوسانات را تعیین میکند. اگر Damping ratio برابر صفر باشد فنر (میلهی سابق!) تا ابد به نوسان ادامه خواهد داد، و مقدار 1 یعنی نوسانات به سرعت متوقّف خواهند شد.
فراموش نکنید که…
قانون دوم نیوتون میگوید: “بین جرم یک شیء (m)، شتاب آن (a) و نیروی وارد شده به آن (F) رابطهی F=ma وجود دارد.” به عبارت دیگر اگر نیرویی به اندازهی 100 واحد به شیء کوچکی که جرم کمی دارد بدهیم، شیء شتاب بیشتری میگیرد تا اینکه همین مقدار نیرو را به شیئی بزرگ با جرم زیاد بدهیم. واضح است که اشیاء بزرگ و سنگین دوست دارند آهستهتر حرکت کنند و حرکتشان سختتر است! بنابراین باید برای اشیاء کوچک از نیروی کمتر و برای اشیاء بزرگ از نیروی بیشتری استفاده کنید. این مطلب برای ضربهها و گشتاور نیز صادق است.
نتیجهگیری
نیروها، ضربهها و گشتاور به شما اجازه میدهند که در بازی خود اشیاء را حرکت دهید و شتاب و چرخش آنها را تنظیم کنید. اتّصالها به شما اجازه میدهند که اشیاء را به نحوهای خندهدار به هم وصل کنید. شما حتّی میتوانید دستگاهها و اختراعات عجیب و غریب بسازید! برای این منظور مثال Physics-vehicle را بررسی کنید. کارهایی که با فیزیک کنستراکت 2 میتوان انجام داد تمامی ندارند. و آزمون و خطا برای آنها نیز بسیار لذّتبخش است.
مجتبی قاسم زاده تهرانی
خرداد 1393
[۱]force
[۲] بر طبق ویکی پدیا (انگلیسی)
[۳]impulse
[۴]Torque
[۵]joint
[۶] شرطهای ترو (true): به شرطهایی اطلاق میشود که در یک بازهی زمانی به طور پیوسته برقرار هستند.
[۷] شرطهای تریگر (trigger): شرطهایی هستند که فقط در یک لحظه برقرار میشوند.
[۸]Angular Velocity
[۹]Revolute joint
[۱۰]Distance joint
[۱۱] نسبت میرایی
[۱۲] بسامد کشسانی
ادامه بده آقا مجتبی
کارت خیلی خوبه تبریک میگم
سلام ببخشید لینک PDF این آموزش خرابه
سلام
تست شد
مشکلی نداره.
سلام. ممنون از آموزش های عالی شما. با مطالعه این مطلب به راحتی تونستم فیزیک رو پیاده سازی کنم ولی وقتی به بازیم فیزیک و اضافه کردم و خروجی کراس واک گرفتم صفحه سیاه نشون میده ولی وقتی فیزیک نداره درست اجرا میشه. ممنون میشم راهنماییم کنید که بتونم خروجی درست بگیرم. نسخه کانستراکت r216 و xdk26
سلام خسته نباشین من برای ساخت بازی ماشینی از فیزیک استفاده کردم ولی پند تا مشکل دارم امیدوارم با جواب های شما حل شود
1ومیروی برای تست تو بازی ماشین روی هواست با وجود گداشتن جاذبه
2وقی روی پدال کلیک میشود چرخ ها قاطی میچرخند و بعد از کمی جلو رفتن ماشین به زمین می افتد
امیدوارم با راهنماهی شما مشکلم حل شود
فایل خرابه!!!!!!!!!
سلام
با خود مرورگر دانلود کنید، بدون دانلود منیجر.