⭕️توضیحاتی برای ابزار Paint Height در یونیتی
🔹برای یک دست کردن ارتفاع در محیط بازی از این گزینه استفاده کنید.
@UnityLearning
🔹برای یک دست کردن ارتفاع در محیط بازی از این گزینه استفاده کنید.
@UnityLearning
⭕️همه چیز در مورد #پنجره Game در #یونیتی
🔹این پنجره برای نمایش آنچه در خروجی بازی نمایش داده می شود، استفاده می شود.
@UnityLearning
🔹این پنجره برای نمایش آنچه در خروجی بازی نمایش داده می شود، استفاده می شود.
@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 برای بررسی برخورد در یونیتی)
▫️این پست به #درخواست کاربران قرار میگیرد.
🔙 همانطور که قبلا بیان کردیم در یونیتی #کامپوننت 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💢
👍1
⭕️ بررسی آبجکت ورودی توابع 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💢
👈در پست قبل مطالبی در مورد توابع مذکور بیان کردیم و گفتیم این توابع یک پارامتر ورودی از نوع 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
👈به منظور ایجاد یک آبجکت که ماهیت ظاهری نداشته باشد ولی کالیدر آن عمل کند.
@UnityLearning
⌨با انتخاب سه دکمه
Ctrl➕Shift➕A
بعد از انتخاب آبجکت در Hierarchy #پنجره کوچکی در Inspector باز میشود تا به کمک آن بتوانید #کامپوننت مورد نظر خود را جستجو و به آبجکت اضافه کنید.
@UnityLearning
Ctrl➕Shift➕A
بعد از انتخاب آبجکت در Hierarchy #پنجره کوچکی در Inspector باز میشود تا به کمک آن بتوانید #کامپوننت مورد نظر خود را جستجو و به آبجکت اضافه کنید.
@UnityLearning
Unity Learning
⌨با انتخاب سه دکمه Ctrl➕Shift➕A بعد از انتخاب آبجکت در Hierarchy #پنجره کوچکی در Inspector باز میشود تا به کمک آن بتوانید #کامپوننت مورد نظر خود را جستجو و به آبجکت اضافه کنید. @UnityLearning
⭕️ #دانلود #آبجکت بسیار با کیفیت Iron Man
🔹شخصیت اصلی کارتون و سری بازی های Iron Man
📍سورپرایز ویژه کانال
🔸دانلود در پست بعدی
@UnityLearning
🔹شخصیت اصلی کارتون و سری بازی های Iron Man
📍سورپرایز ویژه کانال
🔸دانلود در پست بعدی
@UnityLearning
jzb865er6v_IronMan.rar
10.1 MB
⭕️ #دانلود #رایگان #آبجکت Iron Man
👈کاملا Rig شده و آماده برای استفاده در بازی (قابلیت جداسازی بخشهای مختلف برای شبیه سازی اعمال)
🔹فرمت obj
@UnityLearning
👈کاملا Rig شده و آماده برای استفاده در بازی (قابلیت جداسازی بخشهای مختلف برای شبیه سازی اعمال)
🔹فرمت obj
@UnityLearning
🏎 #دانلود #آبجکت بسیار با کیفیت ماشین
Bugatti Chiron 2017 sports
🔹ساخته شده با بلندر با قابلیت تغییر و کیفیت فوق العاده
@UnityLearning
Bugatti Chiron 2017 sports
🔹ساخته شده با بلندر با قابلیت تغییر و کیفیت فوق العاده
@UnityLearning
6e48z1kc7r40_bugatti.zip
74.2 MB
⭕️ #دانلود #آبجکت ماشین با کیفیت عالی
🔸ساخته شده با بلندر
📍فرمت های در دسترس blend و obj
@UnityLearning
🔸ساخته شده با بلندر
📍فرمت های در دسترس blend و obj
@UnityLearning
⭕ با کلیک راست روی آیتم مورد نظر در #پنجره Project و سپس انتخاب گزینه Show in Explorer پنجره Explorer ویندوز/مک که فایل مورد نظر در آن قرار دارد باز می شود.
@UnityLearning
@UnityLearning
⭕ اضافه کردن یک آبجکت به عنوان بچه (Child) به یک #آبجکت دیگر به صورت خودکار و با یک کلیک
@UnityLearning
@UnityLearning
👍1
⭕️ #اطلاعیه
🔸برخی دوستان که به کانال بپوستند میخواهند از ابتدا شروع کنند و درخواست معرفی منبع دارند.
🔹کانال یونیتی لرنینگ حدود یک سال و نیم است که آموزش یونیتی را از صفر آغاز کرده است(درست است که آموزش های اولیه به اندازه پست های حال با کیفیت نیستند اما قابل مطالعه و فهم هستند)
@UnityLearning
🔘این دسته از افراد میتوانند با کلیک روی دکمه پایین این پست به اولین پست آموزشی کانال که در 26 اردیبهشت 1395 منتشر شده است، دسترسی داشته باشند.
🔸برخی دوستان که به کانال بپوستند میخواهند از ابتدا شروع کنند و درخواست معرفی منبع دارند.
🔹کانال یونیتی لرنینگ حدود یک سال و نیم است که آموزش یونیتی را از صفر آغاز کرده است(درست است که آموزش های اولیه به اندازه پست های حال با کیفیت نیستند اما قابل مطالعه و فهم هستند)
@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💢
📷 برای گرفتن اسکریپن شات در فرمت 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
👈 دانلود در پست بعدی کانال
@UnityLearning
Grass And Flowers Pack 1.unitypackage
72.1 MB
⭕️ #پکیج گل و گیاه برای استفاده به عنوان Grass روی Terrain در یونیتی
🌷مجموعه #تکسچر های دو بعدی برای گل و گیاه
@UnityLearning
🌷مجموعه #تکسچر های دو بعدی برای گل و گیاه
@UnityLearning
👍1
Unity Learning
⭕ گرفتن اسکرین شات از صفحه بازی در یونیتی 📷 برای گرفتن اسکریپن شات در فرمت png از صفحه جاری بازی دستوری از #کلاس Application ارائه شده است، با کمک این دستور شما می توانید یک عکس با کیفیت تعیین شده از صفحه بازی خود داشته باشید. /👇 Application.CaptureSc…
ScreenCapture.js
329 B
⭕اسکریپت آماده جهت ساخت اسکرین شات با زدن کلید F11 در بازی
🔹 دارای تابع ScreenCapture برای استفاده به عنوان متدِ OnLoad یک Button
🔸اسکریپت با دو قابلیت
🔹 دارای تابع ScreenCapture برای استفاده به عنوان متدِ OnLoad یک Button
🔸اسکریپت با دو قابلیت
⭕ حالات مختلف آب در یونیتی
💦 بازتاب شدن تصویر در آب+نمایش آنچه زیر آب است(حالت شیشه ای)
@UnityLearning
💦 بازتاب شدن تصویر در آب+نمایش آنچه زیر آب است(حالت شیشه ای)
@UnityLearning
🌹میلاد با سعادت حضرت امام هادی علیه السلام بر عاشقان طریقت اهل بیت مبارک باد.
🌷السلام علیک یا علی بن محمد ایها الهادی النقی
@UnityLearning
🌷السلام علیک یا علی بن محمد ایها الهادی النقی
@UnityLearning