
مقدمه
یکی از مفاهیم اساسی در ساخت بازیهای تعاملی در موتور Unity، استفاده از تریگر (Trigger) است. اگر بخواهید زمانی که بازیکن وارد منطقهای خاص شد، درِ یک قلعه باز شود یا دشمنی از کمین بیرون بیاید، به تریگر نیاز دارید. در این مقاله، به صورت کامل و گامبهگام با مفهوم Trigger در یونیتی، نحوه پیادهسازی آن، تفاوت آن با برخوردهای معمول (Collision)، نکات مهم در بهینهسازی و مثالهای عملی آشنا میشویم.
تریگر چیست؟
در Unity، تریگرها مناطقی هستند که با استفاده از Colliderها مشخص میشوند، اما برخلاف برخوردهای فیزیکی معمول، آنها باعث برخورد فیزیکی نمیشوند. بلکه صرفاً عبور یک شیء از درون این ناحیه میتواند رویدادی را فعال کند.
تعریف ساده:
تریگر یک "نقظه بررسی برخورد غیر فیزیکی" است که در آن میتوان ورود، ماندن یا خروج اشیاء را شناسایی کرد.
تریگر چیست ؟ در یوتوب مشاهده کنید
چگونه یک Trigger بسازیم؟
۱. افزودن Collider
برای اینکه یک GameObject بتواند به عنوان تریگر عمل کند، باید دارای یک Collider (مثلاً Box Collider یا Sphere Collider) باشد.
۲. فعال کردن گزینه Is Trigger
در Inspector، تیک گزینه Is Trigger
را برای Collider فعال کنید.
۳. افزودن یک اسکریپت با توابع تریگر
اسکریپتی به شیء مورد نظر اضافه کنید که شامل توابع زیر باشد:
void OnTriggerEnter(Collider other){
Debug.Log("وارد تریگر شد: " + other.name);
}
void OnTriggerStay(Collider other){
Debug.Log("درون تریگر باقی مانده است: " + other.name);
}
void OnTriggerExit(Collider other) {
Debug.Log("از تریگر خارج شد: " + other.name);
}
تریگر vs برخورد فیزیکی (Collision)
ویژگی | تریگر (Trigger) | برخورد (Collision) |
---|---|---|
فیزیک واقعی دارد؟ | ❌ خیر | ✅ بله |
امکان عبور از آن هست؟ | ✅ بله | ❌ خیر |
استفاده معمول | فعالسازی رویدادها بدون مانع فیزیکی | برخورد اجسام، توقف یا فشار دادن |
نکات مهم در استفاده از Trigger
۱. Rigidbody فراموش نشود!
برای اینکه رویدادهای Trigger کار کنند، حداقل یکی از دو شیء (شیء دارای تریگر یا شیء برخوردکننده) باید Rigidbody داشته باشد.
-
اگر میخواهید شیء ثابت باشد، از Kinematic Rigidbody استفاده کنید.
۲. لایهبندی (Layer Mask)
با استفاده از Layer و تنظیم Physics settings میتوانید کنترل کنید کدام اشیاء با یکدیگر تریگر فعال کنند یا خیر.
۳. Trigger با 2D
در بازیهای دوبعدی، از OnTriggerEnter2D
، OnTriggerStay2D
و OnTriggerExit2D
استفاده کنید.
مثال کاربردی: باز شدن در هنگام ورود بازیکن
فرض کنیم میخواهید در هنگام ورود بازیکن به منطقهای خاص، یک در باز شود:
public class DoorTrigger : MonoBehaviour {
public Animator doorAnimator;
void OnTriggerEnter(Collider other) {
if (other.CompareTag("Player")) {
doorAnimator.SetTrigger("Open");
}}}
-
برای Player باید Tag با نام "Player" تنظیم شود.
-
Animator شامل یک Animation برای باز شدن در باشد.
اشکالات رایج و نحوه رفع آنها
مشکل | دلیل احتمالی | راهحل |
---|---|---|
OnTriggerEnter اجرا نمیشود | Rigidbody وجود ندارد | به یکی از اشیاء Rigidbody اضافه کنید |
برخورد فیزیکی اتفاق میافتد | Is Trigger فعال نشده | تیک Is Trigger را بزنید |
تریگر برای Player کار نمیکند | Tag اشتباه یا Collider غیرفعال | Tag را بررسی و Collider را فعال کنید |
کاربردهای رایج Trigger در Unity
-
باز کردن دربها
-
فعال کردن دشمنان
-
نمایش پیامها
-
انتقال به مرحله بعد
-
راهاندازی کاتسین (Cutscene)
-
شمارش ورود/خروج اشیاء از مناطق خاص
نکات بهینهسازی
-
از کلاسی مانند Object Pooling برای اشیائی استفاده کنید که مکرراً وارد یا خارج میشوند.
-
تا جای ممکن از Trigger در اشیاء ایستا (Static) استفاده نکنید مگر اینکه نیاز واقعی باشد.
-
Triggerهای سنگین را به صورت منطقی بخشبندی کنید تا در هر فریم چک زیاد انجام نشود.
نتیجهگیری
تریگرها ابزار قدرتمندی برای ایجاد تعاملات پیچیده در بازیها هستند. آنها به شما امکان میدهند بدون نیاز به فیزیک واقعی، رویدادهای تعاملی بسازید. چه در بازیهای دوبعدی ساده باشید و چه در پروژههای سهبعدی پیچیده، دانستن نحوه استفاده از Trigger یکی از مهارتهای پایهای هر توسعهدهنده Unity محسوب میشود.
ثبت دیدگاه
0 دیدگاه