hossein asadi
hossein asadi
خواندن ۳ دقیقه·۴ سال پیش

کار کردن با گیم‌پد در یونیتی


ما وقتی میخوایم یه بازی رو تجربه کنیم مجبور هستیم به نحوی اون رو کنترل کنیم، گاهی با شتاب سنج، گاهی با لمس و بعضی اوقات هم با گیم‌پد، لذت بخش ترین راهی که برای کنترل یک بازی پی سی وجود داره استفاده از گیم‌پدِ، اما خب استفاده از گیم‌پد به این آسونی ها نیست ولی من سعی کردم یک راه سریع و آسون رو براتون به شکل کامل توضیح بدم.

اگر تجربه ساخت بازی پی‌سی در کارنامه خودتون دارید و یا در آینده به این سمت حرکت می کنید، احتمالا گذرتون به استفاده از گیم‌پد (کنترلر) توی یونیتی افتاده و یا یک روزی می افته.

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

نحوه کار با گیم‌پد خیلی ساده هست و اینجا یک پروژه نمونه رو هم براتون قرار دادم (لینک‌ها رو ضمیمه میکنم)

توی پروژه نمونه کد شخصی سازی باتن های گیم‌پد هم وجود داره، این کدها ممکنه به دردتون بخوره و با استفاده از اون بتونید راحت تر ساز و کار رو درک کنید.

آموزش کار با گیم‌پد در یونیتی

برای اینکه بتونید از این پکیج استفاده کنید باید مراحلی رو طی کنید، اگر مراحل زیر رو با دقت و حوصله انجام بدین، مشکلی براتون پیش نمیاد و به راحتی میتونید از گیم‌پد استفاده کنید.

اول از همه پکیج رو ایمپورت میکنیم، و بعد تنظیمات اینپوت رو انجام میدیم.

  • از منوی setting گزینه‌ی project setting رو انتخاب میکنیم
  • بعد میریم به قسمت input manager
  • توی این صفحه قسمت بالا سمت چپ یک آیکن داریم کنار آیکن تنظیمات(نمیدونم شکلشو چجوری توضیح بدم)، اونو که انتخاب کنین ازتون یک ورودی میگیره که مربوط به تنظیمات گیم‌پد هست(داخل پکیج موجوده).
  • بعد از انتخاب میتونین تغییرات رو ببینین، تا اینجا ما تنظیمات چهار تا گیم‌پد رو وارد کردیم.

اسکریپت های مورد نیاز برای کار با گیم‌پد (دو اسکریپت مورد نیاز)

اسکریپت اول:

یکی از اسکریپت‌ها GamePad Manager هست که فقط به یدونه از اون توی سین(scene) نیاز داریم، اسکریپت رو به یک گیم‌آبجکت(Game object) میدیم.

اسکریپت دوم:

اسکریپت دوم که برای کار کردن با گیم‌پد هست(GamePad Input) رو باید به تعداد گیم‌پدهایی که توی بازی نیاز داریم داشته باشیم (این پکیج از چهار تا گیم‌پد پشتیبانی میکنه، البته اگر بیشتر از چهار تا هم نیاز داشته باشین با یک خورده تغییرات و شخصی سازی کارتون رو میتونه به راحتی انجام بده).

اسکریپت GamePad Input رو به یک یا چند تا آبجکت میدیم(بستگی به این داره که به چند تا گیم‌پد توی بازی خودتون نیاز داشته باشین)، بعد از دادن اسکریپت و توی پنجره اینسپکتور یک ورودی میبینین به اسم Selected Gamepad که گیم‌پدی هست که اسکریپت به ایونت‌هاش گوش میکنه.

حالا یک اسکریپت میسازیم برای گوش دادن به ایونت‌های گیم‌پد و این اسکریپت رو به عنوان ورودی بهش معرفی میکنیم (اینجا ما اسم متغیر رو joy میذاریم)

حالا توی تابع Start ایونت‌هایی که نیاز داریم رو معرفی میکنیم بهش.

joy.Button0Down += Button0Down;

و بعد تابع مربوط بهش رو میسازیم

private void Button0Down() { Debug.Log(&quotButton0 Down&quot); }


تابع Button0Down مربوط به باتن مثلث توی گیم‌پد هست و همونجوری که مشخصه زمانی که فشرده شه اجرا میشه.

باتن ها به این صورت هستن که از Button0Down تا Button3Down به ترتیب مربوط به مثلث، دایره، ضربدر و مربع هستن و باتن‌های Button4Down تا Button7Down مربوط به باتن‌های L و R هستن، توجه کنید که هر کدوم از این دکمه هارو درست استفاده کنیم.

تابع مربوط به جوی‌استیک‌ها هم چنین چیزی هست که در ادامه اون رو بررسی میکنیم:

  • جوی‌استیک سمت چپ Axis Movement
  • و جوی‌استیک سمت راست Axis3rdMoveMent
  • که یک پارامتر از نوع vector2 بهمون میدن.

توی این آموزش سعی کردیم تمامی مطالب رو به زبان ساده بیان کنیم و از پیچیدگی های استفاده از گیم‌پد کم کنیم، به نظر شما استفاده از گیم‌پد چه قدر میتونه توی ساخت یک بازی اثر گذار باشه؟ آیا لازمه که اون رو یاد بگیریم؟

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

https://github.com/mul83rry/GamePad/

این آموزش توسط حسین اسدی نوشته شده است.

برنامه نویسیآموزش یونیتیبازی سازییونیتیگیم پد
برنامه نویس یونیتی و سوکت سرور
شاید از این پست‌ها خوشتان بیاید