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
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/