Unity Learning
2.99K subscribers
574 photos
211 videos
1.05K files
280 links
⭕️کانال آموزش حرفـــه ای موتور بازی سازی یـــونیتی

▪️ @UnityLearning ▫️

🔹ارتباط با مدیر کانال/👇

@UnityLearning_Admin

🔹 کد شامد /👇

1-1-3526-61-3-1

💰 تعرفه تبلیغات/👇

@UnityLearning_Ads

لینک گروه تبادل نظر اعضای کانال
@UnityLearning_Group
Download Telegram
⭕️ اعمال نیرو مانند انفجار به آبجکت های دارای #کامپوننت Rigidbody

🔹 در یونیتی و در کلاس Rigidbody دستوری با عنوان AddExplosionForce وجود دارد که به کمک آن می توان حالت اعمال نیرو مانند انفجار یک بمب را شبیه سازی کرد. اگر دستور فوق از کامپوننت Rigidbody یک آبجکت را فراخوانی کنید، این دستور نیرویی از محلی که در پارامتر های آن داده اید به آبجکت وارد می کند. قالب کلی این تابع به شکل زیر است/🔻

rb.AddExplosionForce(power, explosionPos, radius, 3.0F);

🔸 در دستور داده شده rb همان کامپوننت Rigidbody از آبجکت مورد نظر است.

🔸 پارامتر power میزان نیروی وارده به آبجکت است (بر اساس float|عدد اعشاری)

🔸 پارامتر explosionPos محل اولیه انشار نیرو است (مثلا محل انفجار بمب)

🔸 پارامتر radius نیز برای نهایت شعاعی است که نیرو در آن به آبجکت ها وارد می شود. (بر اساس قوانین فیزیک)

🔸🔶 پارامترهای بعدی این دستور نیز ForceMode است که قبلاً در توضیح تابع AddForce به طور کامل توضیح داده شده است.

☑️ به منظور اینکه یک نیروی واحد به کلیه آبجکت های اطراف یک محل انفجار وارد شود، باید تک تک آبجکت های دارای کامپوننت Rigidbody را بدست آورد و برای همه آنها دستور فوق را صدا زد(این کار در یونیتی با تابع For (برای جاوا اسکریپت) و Foreach (برای سی شارپ) انجام می شود)

🔘 در پست بعدی اسکریپت ساده برای ایجاد یک نیرو (حالت انفجار) در محل (آبجکتی که کد به آن متصل می شود) قرار می گیرد.

|توجه کنید| این اسکریپت، در محل داده شده و در شعاع وارده کلیه آبجکت های دارای Rigidbody را پیدا کرده و نیرو را به آنها وارد می کند. (به طور مثال می توان این اسکریپت را به آتشی داد که در محل انفجار ایجاد می شود، چون اسکریپت تنها در تابع Start اجرا می شود، بنابراین در این بخش قابل استفاده است )


به کانال یونیتی لرنینگ
بپیــــــــــــــوندید🔻
@UnityLearning
AddExplosionForce.js
524 B
اسکریپت آماده برای اعمال نیرو به سایر آبجکت ها به مرکزیت آبجکتی که این کد به آن متصل شده است و در شعاع مشخص شده برای اسکریپت.

این نیرو شبیه ساز حالت انفجار است!

به زبان #جاوا اسکریپت

@UnityLearning
🔹🔷 لطفا نظر خود در رابطه با کانال و کیفیت آموزش ها در قالب یک نظر سنجی اعلام نمائید. UnityLearning 🔸🔶 کیفیت مطالب را چگونه ارزیابی می‌کنید؟
anonymous poll

عالــــی – 64
👍👍👍👍👍👍👍 71%

خـــوب – 16
👍👍 18%

متوسط – 6
👍 7%

بــــــد – 4
▫️ 4%

👥 90 people voted so far.
UseGravity.js
205 B
⭕️ اسکریپت آماده برای غیر فعال کردن حالت جاذبه

این اسکریپت واکنش در برابر نیروی جاذبۀ هر آبجکتی که به محدودۀ Trigger وارد شود را غیر فعال می کند.
Unity Learning
UseGravity.js
🔘 توضیحات اسکریپت

🔹 در یونیتی برخی #کلاس ها یک سری دستورات برای دسترسی مستقیم به برخی کامپوننت ها دارند. مثلا دستور attachedRigidbody که معادل کامپوننت Rigidbody متصل شده به آبجکت است و می توان گفت معادل دستور زیر است /🔻

GetComponent.<Rigidbody> ();

☑️ برخی از کامپوننت ها مانند Rigidbody دستور معادل و ساده برای جلوگیری از برنامه نویسی زیاد (با تابع GetComponent) را ارائه داده اند.

🔸 در اسکریپت قرار داده شده، به کمک دستور useGravity که از نوع boolean است واکنش جاذبه آبجکت ها را غیر فعال کرده ایم.

other.attachedRigidbody.useGravity = false;

👈 می توان در مواقع لازم مثلا در تابع OnTriggerExit مجدداً آن را فعال کرد تا یک محدوده ایجاد کرد که در آن جاذبه معنا نداشته باشد. (این محدوده همان Trigger ایست که شما برای آبجکتی که این کد را به آن می دهید، ایجاد کرده اید)


📍 لطفاً کانال «یونیتی لرنینگ» را به دوستان و آشنایان خود و همه علاقه مندان به بازی و بازی سازی معرفی کنید.

@UnityLearning
⭕️ بازی بسیار زیبای Naval Action از سری بازی های سبک شبیه سازی ، ساخته شده با موتور یونیتی است.

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

@UnityLearning
انتخاب Web Templete یا قالب برای خروجی بازی های تحت وب در یونیتی

به همراه توضیحات کامل در تصویر

به کانال یونیتی لرنینگ بپیوندید
@UnityLearning
Audio
⭕️ #دانلود #صدا ی وزش باد با قابلیت Loop

به #درخواست شما

به طور مثال برای صدای پس زمینه مناطقی برفی یا شب

به کانال یونیتی لرنینگ
بپیــــــــوندید /🔻
@UnityLearning
Unity Learning
⭕️ #دانلود #صدا ی وزش باد با قابلیت Loop به #درخواست شما به طور مثال برای صدای پس زمینه مناطقی برفی یا شب به کانال یونیتی لرنینگ بپیــــــــوندید /🔻 @UnityLearning
🔸برای استفاده از #صدا های پس زمینه ای مثل باد سعی کنید یک Game Object خالی در مقابل کاراکتر خود قرار دهید و صدای باد را به آن بدهید تا بازی طبیعی تر جلوه کند. چون اگر این صدا را به همان کاراکتر در حال بازی کردن (#کامپوننت Audio Source متصل به پلیر| دقیقاً همانجایی که Audio Listener وجود دارد) این صدا طبیعی نخواهد بود چون صدا باد درست است که همه جا وجود دارد اما باید کمی با بازیکن فاصله داشته باشد.

🔹سپس این GameObject را به بازیکن خود (مثلاً FPSController) بدهید تا همراه با حرکت کند. صداهای دیگر مثل آهنگ ها که برای پس زمینه استفاده می شوند با پخش در محل Player مشکلی ایجاد نمی کنند، تنها کافی است Volume آنها را درست و پایین تر از صداهای عادی بازی تنظیم کرد.

🎵 البته توصیه ما این است که برای صداهایی مثل صدای باد از صداهای با طول بیشتر ولی با قابلیت Loop استفاده کنید. این قابلیت باعث می شود، بازیکن نهایی(کاربر) متوجه اتمام و شروع مجدد صدا نشود، یعنی ابتدا و انتهای صدا به هم مرتبط است.

به کانال آموزشی
یونیتی لرنینگ بپیوندید/🔻
@UnityLearning
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️ نحوه ی Assign کردن (مقدار دهی) پارامتر Audio Clip برای پارامتر Audio Source یا اسکریپت های دارای متغیر از این نوع (تعریف شده به شکل زیر /🔻 در ابتدای اسکریپت)

var clip:AudioClip;

@UnityLearning
Unity Learning
⭕️ نحوه ی Assign کردن (مقدار دهی) پارامتر Audio Clip برای پارامتر Audio Source یا اسکریپت های دارای متغیر از این نوع (تعریف شده به شکل زیر /🔻 در ابتدای اسکریپت) var clip:AudioClip; @UnityLearning
⭕️ نکاتی در رابطه با Assign کردن یا مقدار دهی برخی پارامتر ها در یونیتی

🔸همانطور که می دانید در یونیتی برخی کامپوننت ها و یا اسکریپت هایی که نوشته می شود، نیاز به مقدار دهی برخی پارامتر هایشان دارند. مثلاً پارامتر AudioClip در #کامپوننت AudioSource که برای معرفی صدایی که قرار است این کامپوننت پخش کند، مقدار دهی می شود. بنابراین می توان گفت مقدار دهی ها (به اصطلاح Assign ) معرفی یک Asset به کامپوننت است (توجه کنید که اسکریپت ها نیز یک کامپوننت هستند)

🔹 در یونیتی مقدار دهی فقط با آبجکت یا Asset متناظر انجام می شود، یعنی شما نمی توانید مثلاً یک Game Object به یک پارامتر از نوع Audio Clip بدهید.

▫️ نحوه مقدار دهی در یونیتی نیز با دِرَگ کردن و یا انتخاب دایره کنار پارامتر صورت می گیرد که روش اول آسان تر است.

👌 دِرَگ کردن در یونیتی از پنجره های Project و Hierarchy به Inspector قابل انجام است یعنی شما Asset مورد نظر را از یکی از این پنجره ها گرفته و به پارامتر معادل می دهید. اما حالتی هم برای درَگ کردن از پنجره Inspector به خودش است و آن تنها برای مقدار دهی متغیرهایی از نوع کامپوننت است. زمانی که یک متغیر از نوع یک کامپوننت تعریف کردید و لازم است آن را مقدار دهی کنید یکی از روش ها درگ کردن آن کامپوننت روی پارامتـــــر تعریف شده است.

🔹به کانال یونــــیتی لرنینگ
بپیـــــــوندید /🔻
@UnityLearning
This media is not supported in your browser
VIEW IN TELEGRAM
مقدار دهی پارامتر های آرایه ای در یونیتی

هم از پنجره Hierarchy و هم از پنجره Project

اگر آبجکت را روی نام پارامتر بکشید ، خودکار به آخرین عضو آرایه اضافه می‌شود و نیازی به تغییر گزینه Size نیست.
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️ #دانلود #کاراکتر_سوم_شخص به صورت پروژه کامل

آماده جهت استفاده در پروژه اصلی با قابلیت های کامل (حرکت، پرش، حرکت دوربین با ماوس و...)

🔻در پست بعدی دانلود کنید🔻
ThirdPersonController@UnityLearning.zip
10.9 MB
⭕️ #پروژه کامل کاراکتر سوم شخص با کیفیت بسیار عالی

🔸قابلیت های حرکت، چرخش، جابجایی دوربین با دوربین، حرکت آرام و...

📎 این فایل به صورت یک پروژه یونیتی در یک فایل zip فشرده شده

@UnityLearning
MouseLook.js
411 B
⭕️ اسکریپت آماده جابجایی دوربین با ماوس

حالت دیدن و چرخش دوربین به وسیله حرکت ماوس

این اسکریپت را به دوربین یا هر آبجکتی که می خواهید با ماوس بچرخد، بدهید. به زبان #جاوا اسکریپت

@UnityLearning
Unity Learning
MouseLook.js
⭕️ استفاده از جهات حرکتی ماوس در یونیتی

🔹قبلاً در مورد بررسی رویدادهای ماوس و آنچه برای بررسی محل حرکت ماوس (در فضای دو بعدی که ماوس جابجا می شود) مطالبی بیان کرده بودیم. در این پست دستور Input.GetAxis برای این کار بررسی می شود.

🔸 همانطور که می دانید این تابع (GetAxis) از کلاس Input برای بررسی ورودی های جهتی (مثل دکمه های جهتی کیبرد، دسته بازی، کنسول های بازی|فرمان و...) استفاده می شود. یکی از دیگر از ورودی هایی که با تغییر جهات کار می کند، ماوس است و این تابع نیز از آن پشتیبانی می کند. اما پارامتر ورودی برای بررسی جهت حرکتی ماوس با پارامتر های قبلی (Vertical و Horizontal) متفاوت است.

📍یادآوری: قبلاً برای بررسی جهات عمودی (بالا و پایین) از دستور زیر استفاده می کردیم و خروجی این دستور اگر کاربر جهت بالا را فشار داده بود +1 و اگر جهت پایین انتخاب شده بود -1 است و در هیچ کدام از حالات قبل خروجی دستور 0 بود، بنابراین با ضرب این عدد در جهت می توانستیم بردار حرکتی را محاسبه کنیم ./🔻
Input.GetAxis ("Vertical")

* مشابه آنچه گفته شد نیز برای سمت چپ و راست نیز با دستور زیر امکان پذیر است /🔻
Input.GetAxis ("Horizontal")

🔸 مانند آنچه بیان شد، در یونیتی، برای بررسی جهت حرکت ماوس نیز دستوراتی وجود دارد. خروجی دستور زیر (که در اسکریپت هم موجود است) در صورت حرکت عمودی ماوس معادل قبل است. (اگــر ماوس به سمت بالا برود خروجی +1 و....) /🔻
Input.GetAxis ("Mouse Y");

و همچنین برای جهت حرکت چپ و راست نیز دستور به شکل زیر است /🔻
Input.GetAxis ("Mouse X")

(خروجی دستور : +1 برای حرکت به سمت راست، 0 برای ثابت بودن در آن جهت و -1 برای حرکت به سمت چپ)

🔘بنابراین مانند قبل برای حرکت آبجکت ها با ماوس نیز می توان به راحتی از دستورات فوق استفاده کرد و برنامه نویسی را بسیار کاهش داد.

به کانال یونیتی لرنینگ
بپیــــــــوندید /🔻
@UnityLearning
Unity Learning
⭕️ استفاده از جهات حرکتی ماوس در یونیتی 🔹قبلاً در مورد بررسی رویدادهای ماوس و آنچه برای بررسی محل حرکت ماوس (در فضای دو بعدی که ماوس جابجا می شود) مطالبی بیان کرده بودیم. در این پست دستور Input.GetAxis برای این کار بررسی می شود. 🔸 همانطور که می دانید این…
⭕️پنجره Input Manager برای پارامتر Mouse X

اگر به هر دلیل این پارامتر(Mouse X) در این پنجره را ندارید، باید بعد از اضافه کردن یک سطر جدید آن را دقیقا با همین نام و مشخصات (طبق تصویر 👆) اضافه کنید.
⭕️ اجرای یک اسکریپت در زمان طراحی بازی (Edit Mode)

🔹 همانطور که می دانید به طور پیش فرض اسکریپت های یونیتی تنها در حالت اجرای بازی Play Mode اجرا می‌شوند (غیر از برخی توابع که عملکرد آنها روی حالت Edit Mode است)

🔸 اما گاهی برنامه نویس نیاز دارد کدی که می نویسد در حالت Edit Mode یعنی در زمان طراحی اجرا شود. با نوشتن پارامتر زیر در ابتدای اسکریپت شما کاری می‌کنید که این اسکریپت برای آبجکت(های) مورد نظر در زمان طراحی بازی اجرا شود (این کار معمولا برای تست انجام می‌شود و بسیار کاربردی است)

#جاوا اسکریپت /🔻
@script ExecuteInEditMode()

#سی_شارپ /🔻
[ExecuteInEditMode]

▫️ در سی شارپ با توجه به این که باید کلاس تعریف کنید این دستور قبل از تعریف کلاس نوشته می‌شود. /🔻
[ExecuteInEditMode]
public class......

❗️دقت کنید، این دستور باعث می‌شود این اسکریپت تنها در حالت Edit Mode اجرا شود و دیگر در زمان اجرای بازی تأثیری روی آن ندارد و اجرا نخواهد شد.


🔸به کانال یونیتی لرنینگ
بپیوندید /🔻
@UnityLearning
⭕️ جدا سازی فرزندان یک Transform

🔹همانطور که می دانید، یک Transform می تواند چندین آبجکت و یا زیر آبجکت به عنوان بچه داشته باشد. در صورتی که لازم باشد می توانید با دستور DetachChildren این آبجکت ها را از پدرشان جدا کرد. در واقع اتحادی که بین آبجکت های بچه و آبجکت پدر وجود دارد شکسته می شود و در واقع آنها از یک دیگر جدا می شوند.

transform.DetachChildren();

دستور فوق کلیه آبجکت های بچۀ آبجکتی که کد به آن متصل شده است را جدا می کند. از دستور DetachChildren برای هر Transfom خاصی می توان استفاده کرد.

به کانال یونیتی لرنینگ
بپیــــــــــــوندید /🔻
@UnityLearning