touch in unity | کار با تاچ در یونیتی (آپدیت شد !)

https://rosedev.ir/courses/%d8%af%d9%88%d8%b1%d9%87-%da%a9%d8%a7%d9%85%d9%84-%d8%a7%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d9%be%da%a9%db%8c%da%86-virtual-joystick/tps://s17.picofile.com/file/8426493576/Joystick_Pack.rar.htmlیونیتی برای خروجی پلتفورم های زیادی رو ساپورت میکنه که رابط کاربری برخی از انها به صورت لمسی می باشد , از این رو تسلط داشتن به پیاده سازی انواع تاچ از جمله تاچ زون ها و جوی استیک ها و دکمه ها و … بسیار حائز اهمیت است. در این اموزش بهترین و بهینه ترین روش برای پیاده سازی تاچ رو به شما عزیزان معرفی خواهم کرد پس تا اخر این مقاله با ما باشید.انواع روش های پیاده سازی تاچکدهای inputسیستم تاچ یونیتیمعرفی پکیج های تاچمعرفی پکیج virtual joystickکدهای inputمنظور از این قسمت کدهای مربوط به mouse میباشد , شاید کمی عجیب به نظر بیاید ولی در اکثر پلتفورم ها ( معمولا همه ) یکبار تاچ صفحه به معنی کلیک چپ یا mouse(0) است و دوبل تاچ یا دوبل تب به معنی mouse(1) می باشد . حال از اونجایی که با توجه به نوع بازار کار و شرایط ایران , فعلا بیشترین تمرکز بر روی ساخت بازی های اندرویدی یا ios است و تاجایی که بنده اطلاع دارم این فرایند تا حدودی برای اندروید قابل اجرا بوده و پشتیبانی میشود , در مورد ios هیچ اطلاعی ندارم اما معمولا سیستمی مشابه اندروید دارند و یکسانند.کد نمونه برای کلیک ساده :using UnityEngine;public class touch : MonoBehaviour{ void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log("btn pressed !"); } }}در صورتی که کد بالا را اجرا کنیم با کلیک کردن روی صفحه متن دیباگ برای ما چاپ میشود. از این نوع کد میتوانیم برای مواقعی که نیاز به پیاده سازی تاچ پیچیده ای نداریم استفاده کنیم.البته خالی از لطف نیست که به سیستم Button یونیتی هم اشاره ای کنیم که بسیار سبک بوده و برای بازی های موبایل گزینه مناسبی است .touch سیستم یونیتیسیستم touch یونیتی که برای پیاده سازی تاچ بر روی پلتفورم های اندروید و ios در نظر گرفته شده از نظر راحتی استفاده بسیار خوب عمل کرده و برای تشخیص همزمان چند تاچ مناسب است , اما از جمله معایبی که این سیستم دارد این است که کد نوشته شده فقط و فقط بر روی پلتفورم اندروید و ios اجرا میشود یعنی کلیک موس رو به عنوان تاچ شماره 0 نمیشناسه که همین باعث منسوخ شدن ان توسط برنامه نویسان یونیتی شده است.یک نمونه کد برای تاچ :using UnityEngine;public class touch : MonoBehaviour{ void Update() { if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); // get first touch since touch count is greater than zero if (touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Moved) { Debug.Log("YES"); } } }}در کد بالا ابتدا چک میکنیم اگر تعداد ناچ ها در صفحه بیشتر از 0 بود کد تاچ اجرا بشه و چون ما فعلا میخواهیم فقط یک انگشت رو چک کنیم touch رو برابر تاچ0 قرار میدیم و در داخل شرط مینویسیم که اگر انگشت کاربر روی صفحه قرار گرفت و یا روی صفحه حرکت کرد برای ما پیام Yes رو به صورت دیباگ نمایش بده.طبق کد بالا برای شناسایی فقط یک تاچ ساده نزدیک به 10 سطر کد زدیم که همین هم دارای خطا بوده و اگر انگشت کاربر موقع تاچ از یک سمت صفحه خارج بشه سیستم تاچ نمیتونه تشخیص بده که دیگه تاچ انجام نمیشه و معمولا خطا میده . برای همین استفاده از این روش به هیچ وجه اصلا توصیه نمیشه.معرفی پکیج های تاچمعروف ترین پکیج تاچ که در اموزش های فارسی زبان هم خیلی از اون استفاده میشه پکیج Control Freak 2 می باشد که به هیچ عنوان استفاده از اون رو توصیه نمیکنم به علت تغییر دادن اسکریپت ها به صورت خودکار که بعد از نصب و پیکربندی عملا فرایند برگشت رو غیرممکن میکنه و پروژه ارور های بسیار زیادی رو متحمل میشه , همچنین از نظر پردازش و استفاده از منابع هم زیاد جالب نیست , بع از این پکیج پکیج های زیادی دیده ام که اصلا مناسب نیستند و حجم بسیار بالایی دارند مخصوصا نسبت به کاری که انجام میدهند .معرفی پکیج virtual joystickدر میان انبوع پکیج های رنگارنگ که دارای متدهای عجیب و غریب هستند و بیشتر انها جنبه تبلیغاتی دارند , تنها یک پکیج مورد تایید من هست و اون هم همینه.از ویژگی های این پکیج که اونو به یک پکیج نمونه و قابل اتکا تبدیل میکنه میشه به موارد زیر اشاره کرداستفاده مستقیم از event system یونیتی ( که باعث افزایش سرعت کارایی میشه )کدهای اوپن سورس و بسیار خلاصه و در صورت میاز قابل اصلاحدر این پکیج هیچ متد تبلیغی و یا ایکن های اضافی و namespace های الکی استفاده نشدهرایگان بودهقابلیت پیاده سازی انواع جوی استیک رو داره ( داینامیک یا استاتیک )بسیار بسیار قابل شخصی سازی هست که برای جذابیت بازی خیلی مهمهحجم بسیار پایین در حد چند کیلوبایت !touch zone : با این قابلیت میتونید یک قسمت از صفحه رو به صورت منطقه قابل تاچ در نظر پگیریدپشتیبانی کامل از عمق و مراحل اجرای ui که باعث میشه راحت بشه چندین touch zone رو باهم اجرا کردتاچ های اجرا شده با این پکیج روی موبایل و کامپیوتر کاملا پشتیبانی میشن و میتونید راحت تست کنیدباگ خروج انگشت از صفحه موقع تاچ کردن در این پکیج وجود نداره و کملا حل شده است.و … https://s17.picofile.com/file/8426493576/Joystick_Pack.rar.html آموزش استفاده از پکیج virtual joystickهمچنین اگر کار با پکیج بالا برای شما مشکل بود و یا نحوه استفاده از اون رو بلد نبودید میتوانید به صورت رایگان در دوره اموزش پیاده سازی تاچ در یونیتی شرکت کنید. https://rosedev.ir/courses/%d8%af%d9%88%d8%b1%d9%87-%da%a9%d8%a7%d9%85%d9%84-%d8%a7%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d9%be%da%a9%db%8c%da%86-virtual-joystick/ تمامی حقوق مطالب نوشته شده در این صفحه متعلق به سایت رز سافت میباشد و هرگونه کپی برداری از ان شرعا حرام و از طریق قانون قابل پیگیری است , برای خواندن مقاله های رایگان در مورد بازی سازی به ادرس زیر مراجعه نمایید.باتشکر https://rosedev.ir/%d9%85%d9%82%d8%a7%d9%84%d9%87-%d9%87%d8%a7/