فیزیک در کنستراکت ۲: مفاهیم اوّلیّه

بسم الله الرّحمن الرّحیم

physics1kch

سلام. فیزیک در کنستراکت ۲ به شما اجازه می‌دهد که در بازی‌تان اشیائی داشته باشید که از قوانین فیزیک پیروی کنند مثل دنیای واقعی. شما می‌توانید بعضی از چیزهایی را که در کلاس فیزیک در مدرسه یاد گرفتید را با فیزیک کنستراکت ۲ پیاده کنید. ما در این‌جا این طور در نظر می‌گیریم که از قبل اصول و مبانی را یاد نداشته باشید و اصول فیزیک در کنستراکت ۲ را برایتان توضیح می‌دهیم. برای دانلود این آموزش می‌توانید از لینک زیر استفاده کنید، اگر هم می‌خواهید این آموزش را به صورت آنلاین مطالعه کنید به «بیشتر بخوانید» مراجعه کنید.

فیزیک در کنستراکت ۲: مفاهیم اوّلیّه (1511 downloads)

مقدّمه

یکی از رفتارهای موجود در کنستراکت2 رفتار فیزیک (Physics) نام دارد که با Box2DWeb ساخته شده است. این رفتار به شما اجازه می‌دهد که در بازی‌تان اشیائی داشته باشید که از قوانین فیزیک پیروی کنند مثل دنیای واقعی. اینجا یک مثال داریم که همین موضوع را نشان می‌دهد. فیزیک می‌تواند بازی شما را واقعاً جذّاب و سرگرم کننده کند! در این آموزش توضیحی کلی درباره‌ی به کار بردن فیزیک در بازی خواهیم داد.

شما می‌توانید بعضی از چیزهایی را که در کلاس فیزیک در مدرسه یاد گرفتید را با فیزیک کنستراکت 2 پیاده کنید. ما در این‌جا این طور در نظر می‌گیریم که از قبل اصول و مبانی را یاد نداشته باشید و اصول فیزیک در کنستراکت 2 را برایتان توضیح می‌دهیم. لطفاً مقاله‌ی ویکی‌پدیا را در مورد قوانین حرکت نیوتون بخوانید. این لینک هم می‌تواند مفید باشد.

همراه کنستراکت 2 تعداد زیادی نمونه برای فیزیک وجود دارد! در صفحه‌ی start روی Brows all examples کلیک کنید، اسم همه‌ی نمونه‌های فیزیک با “Physics –” شروع می‌شود، مثلاً “Physics – basics.capx”. بد نیست نگاهی به آن‌ها بیندازید. اگر توضیحاتی را که در ادامه می‌دهیم قبلاً به طور عملی دیده باشید، ممکن است حسّ خوبی به شما دست دهد.
نمونه های فیزیک کنستراکت ۲

چگونه به بازی فیزیک اضافه کنیم؟

شیئی را که می‌خواهید به آن رفتار فیزیکی بدهید را انتخاب کنید، سپس در نوار ویژگی‌ها (Properties Bar) روی مورد مشخص شده در تصویر زیر کلیک کنید.
اضافه کردن رفتار به کنستراکت ۲
در صفحه‌ای که باز می‌شود روی دکمه‌ی دکمه افزودن رفتار جدید کلیک کنید و سپس در پنجره‌ی بعدی Physics را انتخاب نمایید. حالا شیء شما دارای رفتار فیزیک شد.
پنجره‌ی افزودن رفتار برای فیزیک
از این به بعد به هر شیئی که دارای رفتار فیزیک باشد «شیء فیزیکی» می‌گوییم.

جاذبه (Gravity)

به طور پیش‌فرض اشیاء فیزیکی دارای جاذبه هستند، این ویژگی باعث می‌شود که همه‌ی آن‌ها به سمت پایین سقوط کنند. به طور پیش‌فرض مقدار جاذبه 10 است.[1] (یادتان باشد که در کنستراکت 2 محور Yها برعکس ریاضی به سمت پایین افزایش و به سمت بالا کاهش می‌یابد) اگر می‌خواهید جاذبه وجود نداشته باشد با استفاده از اکشن Set world gravity اشیاء فیزیکی مقدار آن را به صفر تغییر دهید. جاذبه به تمام دنیای فیزیکی بازی اعمال می‌شود، یعنی اگر جاذبه‌ی یکی از اشیاء را صفر کنید، جاذبه‌ی همه‌ی اشیاء صفر می‌شود.
تنظیم جاذبه به صفر

صحنه‌سازی

مسلّماً شما هم نمی‌خواهید زمین زیر پای شخصیت بازی‌تان به خاطر جاذبه سقوط کرده و از محدوده‌ی دیدتان خارج شود! حتّی در بازی‌های بدون جاذبه هم ممکن است با برخورد چیزی به بخش‌هایی از صحنه‌ی بازی آن بخش‌ها به حرکت درآیند و یا شروع به چرخش کنند. (این به خاطر قانون سوم نیوتون است که می‌گوید «هر عملی عکس‌العملی مساوی آن و در خلاف جهت آن دارد» یعنی عکس‌العمل برخورد یک شیء به قسمتی از صحنه باعث حرکت آن قسمت می‌شود)

بیشتر اوقات می‌خواهیم صحنه‌های بازی‌مان مثل سنگ ثابت بمانند و تکان نخورند، به خاطر وجود جاذبه سقوط نکنند، و یا با برخورد چیزی به آن‌ها حرکت نکنند. برای این کار در نوار ویژگی‌ها Immovable به معنی غیر قابل حرکت را روی Yes بگذارید.
غیر قابل حرکت کردن شیء فیزیکی
وقتی این کار را انجام دهید انگار که جرم شیءتان بی‌نهایت شده است، به همین دلیل نمی‌تواند از جایش تکان بخورد!

تذکّر: اشیاء فیزیکی فقط بر اشیاء فیزیکی دیگر اثر می‌گذارند. پس رفتار Solid زمین تأثیری روی اشیاء فیزیکی ندارد. اشیاء فیزیکی سایر اشیاء را نادیده می‌گیرند و طوری عمل می‌کنند که انگار اشیاء غیر فیزیکی اصلاً وجود ندارند. اشیاء فیزیکی از داخل اشیاء جامد[2] عبور می‌کنند، مگر این‌که به آن‌ها رفتار فیزیک بدهید و طبق آنچه که الآن گفتیم غیر قابل حرکتشان کنید.

سایر ویژگی‌های رفتار فیزیک

حالا به طور مختصر با بعضی از ویژگی‌های دیگر رفتار فیزیک که در نوار ویژگی‌ها قرار دارند آشنا می‌شویم:

کالیژن‌ماسک (Collision mask)

کالیژن‌ماسک شکل برخورد شیء را تنظیم می‌کند. روی اسپرایت مورد نظرتان دو بار کلیک کنید تا ویرایشگر تصویر باز شود سپس روی ابزار collision polygon کلیک کنید تا بتوانید آن را تغییر دهید. مراقب باشید بیش از حد نقطه ایجاد نکنید، چون ممکن است سرعت بازی را پایین بیاورد. برای درک بهتر به تصاویر زیر توجّه کنید.
کالیژن ماسک دلخواه کایژن ماسک مستطیلی و تنظیم نشده
فرض کنید یک بار کالیژن‌ماسک این استالاکتیت در حالت ۱ و بار دیگر در حالت ۲ قرار داشته باشد. حال اگر وضعیت شیئی دیگر نسبت به آن در بازی به این شکل شود داریم:
وضعیت دو شیء برای بررسی کالیژن ماسک
۱. اگر کالیژن‌ماسک ماسک حالت 1 باشد برخوردی بین مربّع و استالاکتیت لحاظ نمی‌شود (چون در این حالت هنوز مربّع وارد محدوده‌ی کالیژن‌ماسک نشده است).

۲. اگر کالیژن‌ماسک حالت 2 باشد بین استالاکتیت و مربّع برخورد لحاظ می‌شود، یعنی مثلاً اگر تنظیم کرده باشید با برخورد به استالاکتیت مرحله از ابتدا آغاز شود این اتّفاق می‌افتد در حالی که در حالت 1 چنین اتّفاقی نمی‌افتاد.

البته همه‌ی این‌هایی که تا حالا در مورد کالیژن‌ماسک گفتیم در صورتی درست است که در نوار ویژگی‌ها Collision mask روی Use collision polygon باشد.
استفاده از کالیژن پالیگان
اگر کالیژن‌ماسک روی Bounding box و یا Circle تنظیم بشود، از collision polygon در ویرایشگر تصویر چشم‌پوشی می‌شود و به جای آن در صورت انتخاب Bounding box همیشه از یک مستطیل دور شیء به عنوان کالیژن‌ماسک استفاده می‌شود (یک چیزی مثل حالت 2 استالاکتیت ما) و در صورت انتخاب Circle از یک دایره. (این مورد برای اشیائی که مثل توپ می‌چرخند به درد می‌خورد)

جلوگیری از چرخش (Prevent rotation)

اگر Prevent rotation در نوار ویژگی‌ها روی enabled باشد، شیء فیزیکی ما هرگز نخواهد چرخید، حتّی اگر در شروع بازی در جهتی قرار داشته باشد که باید به سرعت بچرخد و زاویه‌اش را تغییر دهد دیگر این کار را انجام نمی‌دهد. این ویژگی برای وقتی کاربرد دارد که خودتان بخواهید جهت زاویه‌ی شخصیّت بازی‌تان را کنترل کنید، مثلاً در یک بازی پلت‌فرم شاید نخواهید هر بار که شخصیّت اصلی بازی خواست حرکت کند پایش به زمین گیر کند و با صورت برود توی زمین!

چگالی (Density)

چگالی برای تشخیص جرم شیء به کار می‌رود، جرم با دشوار بودن حرکت شیء رابطه‌ی مستقیم دارد، یعنی هرچه جرم بیشتر باشد حرکت سخت‌تر خواهد بود. (تذکّر: کلمه‌ی «وزن» لفظ دقیقاً درستی نیست، وزن به جاذبه بستگی دارد، ولی اشیاء در جاذبه‌ی صفر هم جرم دارند. به عبارتی دیگر اشیائی که جرمشان زیاد است در جاذبه‌ی صفر هم به سختی حرکت می‌کنند.)[3] جرم اشیاء با ضرب چگالی در مساحت کالیژن‌ماسک به دست می‌آید[4]، بنابراین یک شیء بزرگ جرم بیشتری نسبت به یک شیء کوچک دارد، اگر چگالی‌هایشان برابر باشد. اگر یک بلوک بتنی داشته باشید باید چگالیش را از چگالی یک تکه چوب معمولی بیشتر کنید.

اصطکاک (Friction)

اصطکاک نیرویی است که در هنگام تماس اشیاء با هم ایجاد می‌شود و حرکتشان را کند می‌کند. نبودن اصطکاک بین دو شیء مانند وقتی می‌ماند که یک سنگ روی یخ سر بخورد، و اصطکاک زیاد مانند موقعی است که می‌خواهید سنگ را روی قطعه‌ای بتون بکشید. مسلّماً کشیدن سنگ روی بتون خیلی سخت‌تر از کشیدن همان قطعه سنگ روی یخ است.

الاستیسیته (Elasticity)

الاستیسیته (یا کشسانی) میزان فنری مانند بودن شیء را تعیین می‌کند. شیئی که الاستیسیته‌ی زیادی داشته باشد، وقتی از یک ارتفاع روی زمین می‌افتد تا اندازه‌ی زیادی به بالا می‌پرد، و شیء بدون الاستیسیته اصلاً به بالا نمی‌جهد.

میرایی خطّی (Linear damping)

اشیاء با همان سرعتی که دارند و در همان جهتی که هستند تا ابد به حرکتشان ادامه می‌دهند، مگر این‌که چیز دیگری بر آن‌ها تأثیر بگذارد. فرض کنید توپ تنیسی را در فضا (خارج از محدوده‌ی کره‌ی زمین) پرتاب کرده‌ایم، این توپ تا ابد حرکت خواهد کرد. (قانون اوّل نیوتون: «یک جسم ساکن یا در حال حرکت در خط مستقیم در همان حالت باقی می‌ماند مگر آن‌که نیرویی خارجی به جسم وارد شود.») در زمین، نیروهایی مثل جاذبه، اصطکاک و مقاومت هوا باعث می‌شوند که این قانون کمتر به چشم بیاید.

ممکن است تا حالا پی برده باشید که در بازی فیزیکی اگر شیئی دیگری را هل بدهد تا ابد آن را با خود حمل می‌کند. ممکن است بخواهید برای زمین اصطکاک تعیین کنید یا مقاومت هوا داشته باشید. برای این کار باید از میرایی خطّی استفاده کنید. افزایش میرایی خطّی باعث می‌شود سرعت اشیاء رفته رفته کاهش یابد، تا در نهایت متوقّف شوند. میرایی خطّی صفر برای اشیائی کاربرد دارد که می‌خواهید تا ابد حرکت کنند، مثل اشیاء فضایی.

میرایی زاویه‌ای (Angular damping)

میرایی زاویه‌ای مفهومی بسیار شبیه به میرایی خطّی دارد به این صورت که در فضا، یک شیء در حال چرخش، با همان سرعتش تا ابد به چرخش خود ادامه می‌دهد. افزایش میرایی زاویه‌ای باعث می‌شود سرعت چرخش شیء رفته رفته کاهش یابد تا وقتی که دیگر نچرخد. میرایی زاویه‌ای بر سرعت حرکت شیء تأثیری ندارد و فقط سرعت چرخش را کاهش می‌دهد.

نکاتی کلّی در مورد فیزیک

عملکرد

شبیه‌سازی‌های فیزیکی شدیداً از CPU کار می‌کشند. برای حرکت مناسب اشیاء فیزیکی، پردازش زیادی باید انجام شود. برای این‌که مطمئن شوید سرعت بازی‌تان خوب است، خیلی زیاد از اشیاء فیزیکی استفاده نکنید. اگر تعداد اشیاء فیزیکی‌ای که همزمان در حال حرکت هستند در بازی‌تان بیش از 100 عدد شود سرعت بازی‌تان کند می‌شود. درضمن، گوشی‌ها و تبلت‌ها نسبت به کامپیوترهای رومیزی قدرت پردازش ضعیف‌تری دارند. اگر می‌خواهید برای موبایل بازی بسازید باید خیلی محافظه‌کار باشید، و سعی کنید بیش‌تر از 20-30 تا شیء فیزیکی به کار نبرید.

تذکّر: اشیائی که کاملاً ساکن هستند و اصلاً در حال حرکت یا چرخش نیستند، در حالت «خواب» قرار می‌گیرند. یعنی دیگر به پردازش نیازی ندارند. اگر شیئی به آن‌ها برخورد کند، «بیدار» می‌شوند و دوباره پردازش شروع می‌شود. امّا اگر شیء حتّی کوچک‌ترین حرکتی انجام دهد، در حالت خواب قرار نمی‌گیرد. نکته‌ای بسیار مهم در مورد عملکرد بازی وجود دارد که باید آن را به خاطر بسپارید: اگر صدها شیء در حالت خواب داشته باشید و فقط حدود 20 تا 30 تا از آن‌ها حرکت کنند (حتّی حرکتی بسیار کوچک)، بازی هنوز هم به خوبی عمل می‌کند.

پایداری

شبیه‌سازی‌های فیزیکی در مجموع قوی نیستند. اگر شبیه‌سازی‌های غیر واقعی[5] انجام دهید، نتیجه‌ای که خواهید گرفت هم احتمالاً واقعی نخواهد بود. مثلاً بخواهید یک شیء بتونی غول‌پیکر با سرعت صوت به زمین اصابت کند. درواقع هرچیزی که با شدّت زیاد انجام شود باعث بی‌ثباتی شبیه‌سازی فیزیکی می‌شود.

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

درضمن، اندازه‌ی اشیاء نیز باعث ناپایداری می‌شود. اشیاء خیلی کوچک (زیر 5 پیکسل) یا خیلی بزرگ (بالای 500 پیکسل) شاید مثل واقعیّت شبیه‌سازی نشوند. سعی کنید هم طول و هم عرض همه‌ی اشیاءتان را در محدوده‌ی 5 تا 500 پیکسل نگه دارید، ضمناً نسبت ابعاد به هم نزدیک باشد و تفاوت زیادی نداشته باشد (مثلاً سایز شیئی 5 × 500 پیکسل نباشد).

به عبارت دیگر، در صورتی‌که اندازه و جرم اشیائی که با هم تعامل دارند حدوداً مثل یکدیگر باشد و سرعتشان نیز نسبتاً کم باشد، فیزیک به بهترین نحو عمل خواهد کرد.

حرکت دستی و سایر رفتارها

اگر اشیاء را به وسیله‌ی ایونت‌ها حرکت دهید (مثلاً با set X و set Y) یا با سایر رفتارها (مثل اضافه کردن رفتار 8 direction به یک شیء فیزیکی) شبیه‌سازی فیزیکی به نحو احسن همراه با آن‌ها کار می‌کند. امّا معمولاً برای طبیعی‌تر و واقعی‌تر کردن همین حرکت، باید به اشیاء فیزیکی نیرو و ضربه وارد کنید. با این کار همه‌ی ویژگی‌های «دنیای فیزیکی» حفظ شده و به دنیای واقعی نزدیک‌تر می‌شود.

اگرچه می‌توانید به شیئی فیزیکی رفتار Platform بدهید، امّا این دو[6] در کنار هم خیلی خوب عمل نمی‌کنند. می‌توانید این کار را با کمک نیروها انجام دهید. اگر می‌خواهید یاد بگیرید که چگونه می‌توان این کار را انجام داد مثال Physics – rolling را که از نمونه‌های پیش‌فرض کنستراکت 2 است را بررسی کنید.

نتیجه

فیزیک می‌تواند بازی شما را واقعاً جذّاب کند، امّا فراموش نکنید که: بیش از حد شیء فیزیکی نداشته باشید، از کارهای ناگهانی پرهیز کنید، سعی کنید برای حرکت اشیاء فیزیکی فقط از نیروها و ضربه‌ها استفاده کنید، اگر کمی مطلب در این مورد یاد بگیرید ضرر نمی‌کنید!

امیدوارم از قسمت اوّل فیزیک در کنستراکت 2 خوشتان آمده باشد. اگر می‌خواهید آموزش بعدی را مطالعه کنید: فیزیک در کنستراکت 2: نیرو، ضربه، گشتاور و اتّصال‌ها.

 

مجتبیٰ قاسم زاده تهرانی
تیر 1393

 

[1] یکای جاذبه (و کلاَ شتاب) در کنستراکت 2 پیکسل بر مربّع ثانیه (یا پیکسل بر ثانیه بر ثانیه) است.

[2] اشیائی که رفتار Solid داشته باشند اشیاء جامد نامیده می‌شوند.

[3] طبق قانون دوم نیوتون رابطه‌ی F=ma  (نیرو=F ، شتاب=a ، جرم=m)  برقرار است. حالا اگر نیرویی یکسان به دو شیء که جرم یکسان ندارند وارد شود چون F آن دو با هم برابر است حاصل‌ضرب شتاب در جرم (ma) نیز برای هر دو برابر خواهد بود، بنابراین جسمی که m بیشتری داشته باشد مجبور است شتاب کمتری داشته باشد.

[4] در اصل \rho = \frac{m}{V} است. (جرم = m، حجم = V، چگالی = ρ) امّا چون بازی ما دو بعدی است و در فضای دوبعدی حجم وجود ندارد، به جای حجم از مساحت کالیژن ماسک استفاده می‌کنیم، بنابراین رابطه به صورت زیر تغییر می‌کند:  \rho = \frac{m}{S} \Rightarrow m = \rho S

[5] غیر واقعی، مثلاً اشیاء از درون هم عبور می‌کنند یا در داخل هم حرکت می‌کنند.

[6] این دو: رفتار Physics و رفتار Platform

سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۴ نظر

افزودن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق برای مرجع تخصصی کانستراکت محفوظ است.