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
اسکریپت آماده جهت پیمایش در صفحه به صورت رندوم و تصادفی /👆

🔹 اسکریپت های خاص برای حرکت در کانال زیاد قرار گرفته است. این اسکریپت در محدوده تعیین شده حرکت را به صورت رندوم انجام می دهد و همچنین حرکت به صورت افقی است (یعنی محور y آبجکت تغییر نمی کند) - علاوه بر اکثر استفاده های مد نظر که در مورد این اسکریپت هست یکی از استفاده ها آن می تواند اتصال به دوربین باشد (مثلا بخواهید یک دوربین ابتدای بازی کل صفحه را به صورت رندوم نمایش دهد)

🔸 این اسکریپت #آبجکت که کد به آن متصل شده است را جابجا می کند.

محدوده ی حرکت آبجکت با پارامتر های minX و MaxX برای حداقل و حداکثر مقادیر X که می تواند روی آبجکت بین آنها جابجا شود و همچنین همین اوصاف برای MinZ و MaxZ بـــرای محور Z

👈 پارامتر دیگر هم velocidadMax سرعت نهایی آبجکت است که می تواند بر اساس آن حرکت کند.

این اسکریپت برای حرکت از #کامپوننت Rigidbody استفاده نمی کند. بنابراین برای استفاده از این #کامپوننت مختار هستید و آبجکت می تواند Rigidbody داشته باشد و یا نداشته باشد.

🔹ضمناً در این اسکریپت از کلاس های مختلفی برای پیدا کردن جهت چرخش و... استفاده شده است، مثل کلاس Mathf و یا #کلاس Quaternion که برای اعمال حرکت و چرخش صحیح از آنها استفاده شده است.

#اسکریپت_نویسی #کد_نویسی #یونیتی #آموزش



کانال یونیتی لرنینگ
💢 @UnityLearning💢
⭕️توضیحاتی برای ابزار Paint Height در یونیتی

🔹برای یک دست کردن ارتفاع در محیط بازی از این گزینه استفاده کنید.

@UnityLearning
⭕️همه چیز در مورد #پنجره Game در #یونیتی

🔹این پنجره برای نمایش آنچه در خروجی بازی نمایش داده می شود، استفاده می شود.

@UnityLearning
⭕️تفاوت توابع OnTrigger و OnCollision

( #آموزش توابع OnCollision برای بررسی برخورد در یونیتی)

▫️این پست به #درخواست کاربران قرار می‌گیرد.

🔙 همانطور که قبلا بیان کردیم در یونیتی #کامپوننت Collider به دو منظور بکار می‌رود.

🔘اول) ساخت یک مانع برای آبجکت ها (یعنی محلی که باعث می‌شود آبجکت ها از هم رد نشوند)

🔘دوم) تعیین محدوده برای اجرای تابع OnTrigger... (اگر هر آبجکتی وارد این محدوده شود کل کدهای تابع OnTriggerEnter اجرا می‌شود و...)

🔹توابع OnCollision زمانی اجرا می‌شوند که دو کالیدر به هم برخورد کنند. حال باعث می‌شود این سؤال پیش آید که تفاوت این دو تابع در چیست؟

پاسخ کاملا واضح است، زمانی که دو جسم دارای کالیدر بهم برخورد می‌کنند به هیچ وجه از هم رد نمیشود یعنی دو کالیدر مماس هم می‌شوند و وارد محدوده هم نمی شوند. که توابع به ترتیب زیر اجرا می‌شوند:

1⃣ در ابتدای شروع لمس و فقط یک بار تابع OnCollisionEnter اجرا می‌شود. (از آن قبلا برای تشخیص برخورد تیر استفاده کرده ایم، برای مشاهده نحوه استفاده به اسکریپت های مربوطه مراجعه کنید)

2⃣ در زمان لمس تابع OnCollisionSlay دایما اجرا می‌شود(نحوه اجرای این تابع مانند تابع Update است فقط تا زمانی اجرا می‌شود که دو آبجکت یک دیگر را لمس کرده اند و در زمان پایان لمس اجرای تابع نیز متوقف می‌شود)

3⃣ در پایان لمس و هنگام جدا شدن فقط یک بار دستورات تابع OnCollisionExit استفاده می‌شود.

⬅️ این توابع همگی یک پارامتر ورودی دارند که #کامپوننت ِ کالیدری است که به آبجکت جاری برخورد کرده است. از روی آن می‌توان دقیقا محل برخورد و لمس دو آبجکت را از بدست آورد.

🔸#جاوا /👇
function OnCollisionEnter(P: Collider )
{.....

🔸#سی_شارپ /👇
void OnCollisionEnter(Collider p)
{....

◀️ در اینجا P همان کامپوننت کالیدری است که آبجکت جاری(که کد را به آن متصل کرده ایم) را لمس کرده است.

💡یادآوری: برای بدست آوردن آبجکت یک کالیدر (آبجکتی که این کالیدر به آن متصل شده است یا اصطلاحا پدر این کالیدر) از دستور زیر استفاده می‌شود.

Collider.transform;

به طور مثال برای p /👇
p.transform

👈آبجکتی است که کالیدر به آن متصل است (یعنی همان آبجکت دیگری که شی جاری به وسیله آن لمس شده است)

#اسکریپت_نویسی #کد_نویسی #یونیتی #برنامه_نویسی

▪️همین شرایط اجرا برای توابع OnTrigger موجود است. با این تفاوت که توابع OnTrigger در زمان ورودی یک کالیدر به محدوده Trigger اجرا می‌شود.



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ بررسی آبجکت ورودی توابع OnCollision و OnTrigger

👈در پست قبل مطالبی در مورد توابع مذکور بیان کردیم و گفتیم این توابع یک پارامتر ورودی از نوع Collider دارند که همان #کامپوننت کالیدریست که وارد محدوده شده و یا آبجکت را لمس کرده.

حال سؤال اینجاست چگونه می توانیم بررسی کنیم این آبجکت چیست و اگر آبجکت مورد نظر ما بود یک عمل را انجام دهیم .

▫️برای این کار سه روش کلی وجود دارد:

🔹روش اول) بررسی مستقیم آبجکت. در این روش آبجکت مورد نظر دقیقا با آبجکت دیگر تست شده و اگر یکی هستند شرط برقرار می‌شود.

🔸اگر آبجکتی به عنوان ورودی ِ اسکریپت از نوع Transform تعریف شود /👇

var testObj:Transform;

▪️می‌توان آن را با آبجکت در تابع مقایسه کرد.

▫️یعنی اگر p کالیدر ورودی است با شرط زیر این کار قابل انجام است/👇

if(p.transform == testObj) {....

👈فقط کافی است آبجکت مورد نظر را در یونیتی به عنوان پارامتر ورودی به اسکریپت بدهید.

🔹 روش دوم) بررسی از روی تگ ها، برای بررسی تگ یک آبجکت که کالیدر به آن متصل است از دستور زیر استفاده کنید(فرض کنید p کالیدر ورودی است) /👇

If(p.gameObject.tags== "TagName") {....

🔹روش سوم) بررسی از روی نام آبجکت، برای بررسی نام آبجکت نیز از شرط زیر استفاده می‌شود /👇

P.gameObject.name == "Name"

⬅️ در این روش آبجکت از روی نامش بررسی می‌شود.

🔰 تمام این دستورات برای بررسی اینکه چه آبجکتی وارد محدوده شده (در OnTrigger) و یا چه آبجکتی لمس کرده (در OnCollision) نوشته می‌شود و سه روش جداگانه پر کاربرد برای اینکار بیان می‌شود که هر کدام کاربرد خاص خود را دارند.

❇️ در یک بازی فقط یک کاراکتر وجود دارد و قرار است تست شود ، بهترین راه استفاده از روش نام است چون تنها یک آبجکت هست و نام آن را می‌دهیم.

یا در برخی بازی ها میخواهیم یک گروه آبجکت را تست کنیم مثلا همه دشمن ها اگر وارد این محدوده شوند باید یک اتفاق بیافتد در اینجا بهترین روش استفاده از تگ هست. (ضمنا تمامی شرط های بیان شده باید در توابع OnTrigger و یا OnCollision با پارامتر ورودی p انجام بشود برای اطلاعات بیشتر پست قبل در مطالعه کنید)



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️ ساخت یک کالیدر خالی با حذف یا غیر فعال کردن Mesh Renderer

👈به منظور ایجاد یک آبجکت که ماهیت ظاهری نداشته باشد ولی کالیدر آن عمل کند.

@UnityLearning
با انتخاب سه دکمه
CtrlShiftA
بعد از انتخاب آبجکت در Hierarchy #پنجره کوچکی در Inspector باز می‌شود تا به کمک آن بتوانید #کامپوننت مورد نظر خود را جستجو و به آبجکت اضافه کنید.

@UnityLearning
Unity Learning
با انتخاب سه دکمه CtrlShiftA بعد از انتخاب آبجکت در Hierarchy #پنجره کوچکی در Inspector باز می‌شود تا به کمک آن بتوانید #کامپوننت مورد نظر خود را جستجو و به آبجکت اضافه کنید. @UnityLearning
👆 #پنجره کوچکی که بعد از زدن سه دکمه CtrlShiftA برای اضافه کردن Components باز می‌شود.

🔹می‌توانید در این پنجره نام #کامپوننت مورد نظر را وارد و با انتخاب آن، کامپوننت به آبجکت اضافه می‌شود.
⭕️ #دانلود #آبجکت بسیار با کیفیت Iron Man
🔹شخصیت اصلی کارتون و سری بازی های Iron Man

📍سورپرایز ویژه کانال

🔸دانلود در پست بعدی

@UnityLearning
jzb865er6v_IronMan.rar
10.1 MB
⭕️ #دانلود #رایگان #آبجکت Iron Man

👈کاملا Rig شده و آماده برای استفاده در بازی (قابلیت جداسازی بخشهای مختلف برای شبیه سازی اعمال)

🔹فرمت obj

@UnityLearning
🏎 #دانلود #آبجکت بسیار با کیفیت ماشین
Bugatti Chiron 2017 sports

🔹ساخته شده با بلندر با قابلیت تغییر و کیفیت فوق العاده

@UnityLearning
6e48z1kc7r40_bugatti.zip
74.2 MB
⭕️ #دانلود #آبجکت ماشین با کیفیت عالی

🔸ساخته شده با بلندر

📍فرمت های در دسترس blend و obj

@UnityLearning
با کلیک راست روی آیتم مورد نظر در #پنجره Project و سپس انتخاب گزینه Show in Explorer پنجره Explorer ویندوز/مک که فایل مورد نظر در آن قرار دارد باز می شود.

@UnityLearning
اضافه کردن یک آبجکت به عنوان بچه (Child) به یک #آبجکت دیگر به صورت خودکار و با یک کلیک

@UnityLearning
⭕️ #اطلاعیه

🔸برخی دوستان که به کانال بپوستند می‌خواهند از ابتدا شروع کنند و درخواست معرفی منبع دارند.

🔹کانال یونیتی لرنینگ حدود یک سال و نیم است که آموزش یونیتی را از صفر آغاز کرده است(درست است که آموزش های اولیه به اندازه پست های حال با کیفیت نیستند اما قابل مطالعه و فهم هستند)

@UnityLearning

🔘این دسته از افراد می‌توانند با کلیک روی دکمه پایین این پست به اولین پست آموزشی کانال که در 26 اردیبهشت 1395 منتشر شده است، دسترسی داشته باشند.
گرفتن اسکرین شات از صفحه بازی در یونیتی

📷 برای گرفتن اسکریپن شات در فرمت png از صفحه جاری بازی دستوری از #کلاس Application ارائه شده است، با کمک این دستور شما می توانید یک عکس با کیفیت تعیین شده از صفحه بازی خود داشته باشید. /👇

Application.CaptureScreenshot("Screenshot.png");

👈 دستور بالا عکس Screenshot.png را در مسیر جاری بازی (کنار فایل exe بازی در ویندوز و طبق شرایط تعریف شده در سیستم عامل های موبایل (اندروید و iOS) در مسیر persistentDataPath قرار می دهد. اگر فایل به همین نام در این مسیر وجود داشته باشد یونیتی آنرا جایگزین می کند.

🔸 این دستور می تواند به عنوان متدِ یک تابع(function) نوشته شود و سپس به عنوان پارامتر به متد های OnClick یک Button داده شود تا در صورتی که کاربر نهایی بازی روی این دکمه کلیک کرد یک اسکرین شات از صفحه جاری بازیش داشته باشد.

🔹 همچنین می توان زمانی این دستور را فراخوانی کرد که یک کلید از صفحه کلید فشرده شده باشد مثلا زمانی که بازیکن کلید F4 را زد یک اسکرین شات از بازی گرفته و ذخیره شود.
/👇

if(Input.GetKeyDown(KeyCode.F4))
{
Application.CaptureScreenshot("Screenshot.png");
}


#اسکریپت_نویسی #جاوا #سی_شارپ #یونیتی #گرفتن_اسکرین_شات_از_صفحه

#درخواست

کانال یونیتی لرنینگ
💢 @UnityLearning💢
🌷 #پکیج بسیار با کیفیت و با تنوع گل و گیاه برای استفاده در یونیتی به عنوان Grass- Details

👈 دانلود در پست بعدی کانال

@UnityLearning
Grass And Flowers Pack 1.unitypackage
72.1 MB
⭕️ #پکیج گل و گیاه برای استفاده به عنوان Grass روی Terrain در یونیتی

🌷مجموعه #تکسچر های دو بعدی برای گل و گیاه

@UnityLearning
حالات مختلف آب در یونیتی

💦 بازتاب شدن تصویر در آب+نمایش آنچه زیر آب است(حالت شیشه ای)

@UnityLearning
🌹میلاد با سعادت حضرت امام هادی علیه السلام بر عاشقان طریقت اهل بیت مبارک باد.

🌷السلام علیک یا علی بن محمد ایها الهادی النقی

@UnityLearning