⭕ حالات مختلف آب در یونیتی
💦 بازتاب شدن تصویر در آب+نمایش آنچه زیر آب است(حالت شیشه ای)
@UnityLearning
💦 بازتاب شدن تصویر در آب+نمایش آنچه زیر آب است(حالت شیشه ای)
@UnityLearning
🌹میلاد با سعادت حضرت امام هادی علیه السلام بر عاشقان طریقت اهل بیت مبارک باد.
🌷السلام علیک یا علی بن محمد ایها الهادی النقی
@UnityLearning
🌷السلام علیک یا علی بن محمد ایها الهادی النقی
@UnityLearning
⭕ باز کردن یک فایل (به عنوان یک Object) در یونیتی
▫ قبلاً آمـــوزش کامل باز کردن و ذخیره کردن یک فایل متنی در یونیتی را بیان کردیم. این فایل یک فایل متنی طبعاً با خروجی String بــود و کار با آن نسبتاً ساده بود.
◀ در این آمـــوزش در نظر داریم، باز کردن یک فایل (مثل یک عکس، ویدیو و...) در یونیتی از یک مسیـــر در حافظه رسانه (مثلا مموری یا هارد در موبایل یا سیستم) را بیان کنیم.
ℹ برای باز کردن یک فایل از سیستم در یونیتی از دستور Resources.Load استفاده می شود. در واقع #کلاس Resources برای دسترسی به منابـــع جانبی سیسنم استفاده می شود که سایر دستورات آنرا نیز در کانال بیان خواهیم کرد در اینجا قصد داریم دستور Load را بیان کنیم.
🔸 خروجی دستور Resources.Load از نوع Object اســـت که باید در برنامه نویسی تبدیل شود. این تبدیل در جاوا با کلمه as انجام می شود. البته یکی از روش های این تبدیل برای #سی_شارپ نیز as است ولی روش های دیگر و کاربردی تری برای تبدیل وجود دارد.
🔹 پارامتر ورودی دستور Resources.Load مسیر و نام فایل مورد نظر است و اگر مسیر داده نشود منظور «مسیر جاری بازی» است و خروجـــی آن یک Object است که می تواند در بخش های مختلف در کد نویسی استفاده کرد. مثلا اگر یک عکس دو بعدی باز کردیم (مثلا از نوع png) می توانیم با چنین دستور به Texture آن دسترسی داشت.
Object.Texture;
🔹 بـــا فرض این که یک فایل Glass.png در کنار فایل اصلی بازی موجود باشد دستورات زیر این فایل را به عنوان Textureبه یک Plan اختصاص می دهند./👇
rend.material.mainTexture = Resources.Load("glass") as Texture;
🔸 البته فرض کنید متغیر rend #کامپوننت Renderer از آبجکت Plan اســـت. /👇
var rend = Plan.GetComponent.<Renderer>();
🔰 البته دستور Resources.Load دارای یک پارامتـــر دیگر به نام systemTypeInstance اســـت. که می توان نوع خــروجی دستور را از حالت پیشفرض Object تغییر داد و نوع جدید آن را تبدیل کرد. پـــارامتر دوم در واقع نام نوع خروجی متغیر است. مثلا دستور زیر آبجکت Enemy را (فایل Enemy را) باز می کند و خروجی آن از نوع GameObject است و به کمک دستور Instantiate این آبجکت را می سازد.
var instance : GameObject = Instantiate(Resources.Load("enemy", GameObject));
👈 فرض کنید enemy یک فایل از نوع گیم آبجکت (مثلا از نوع FBX) اســـت و دستور Resource.Load آنرا از نوع GameObject بر می گرداند و دستور Instantiate این آبجکت را در بازی می سازد.
#اسکریپت_نویسی #جاوا #باز_کردن #فایل #یونیتی #کد_نویسی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
▫ قبلاً آمـــوزش کامل باز کردن و ذخیره کردن یک فایل متنی در یونیتی را بیان کردیم. این فایل یک فایل متنی طبعاً با خروجی String بــود و کار با آن نسبتاً ساده بود.
◀ در این آمـــوزش در نظر داریم، باز کردن یک فایل (مثل یک عکس، ویدیو و...) در یونیتی از یک مسیـــر در حافظه رسانه (مثلا مموری یا هارد در موبایل یا سیستم) را بیان کنیم.
ℹ برای باز کردن یک فایل از سیستم در یونیتی از دستور Resources.Load استفاده می شود. در واقع #کلاس Resources برای دسترسی به منابـــع جانبی سیسنم استفاده می شود که سایر دستورات آنرا نیز در کانال بیان خواهیم کرد در اینجا قصد داریم دستور Load را بیان کنیم.
🔸 خروجی دستور Resources.Load از نوع Object اســـت که باید در برنامه نویسی تبدیل شود. این تبدیل در جاوا با کلمه as انجام می شود. البته یکی از روش های این تبدیل برای #سی_شارپ نیز as است ولی روش های دیگر و کاربردی تری برای تبدیل وجود دارد.
🔹 پارامتر ورودی دستور Resources.Load مسیر و نام فایل مورد نظر است و اگر مسیر داده نشود منظور «مسیر جاری بازی» است و خروجـــی آن یک Object است که می تواند در بخش های مختلف در کد نویسی استفاده کرد. مثلا اگر یک عکس دو بعدی باز کردیم (مثلا از نوع png) می توانیم با چنین دستور به Texture آن دسترسی داشت.
Object.Texture;
🔹 بـــا فرض این که یک فایل Glass.png در کنار فایل اصلی بازی موجود باشد دستورات زیر این فایل را به عنوان Textureبه یک Plan اختصاص می دهند./👇
rend.material.mainTexture = Resources.Load("glass") as Texture;
🔸 البته فرض کنید متغیر rend #کامپوننت Renderer از آبجکت Plan اســـت. /👇
var rend = Plan.GetComponent.<Renderer>();
🔰 البته دستور Resources.Load دارای یک پارامتـــر دیگر به نام systemTypeInstance اســـت. که می توان نوع خــروجی دستور را از حالت پیشفرض Object تغییر داد و نوع جدید آن را تبدیل کرد. پـــارامتر دوم در واقع نام نوع خروجی متغیر است. مثلا دستور زیر آبجکت Enemy را (فایل Enemy را) باز می کند و خروجی آن از نوع GameObject است و به کمک دستور Instantiate این آبجکت را می سازد.
var instance : GameObject = Instantiate(Resources.Load("enemy", GameObject));
👈 فرض کنید enemy یک فایل از نوع گیم آبجکت (مثلا از نوع FBX) اســـت و دستور Resource.Load آنرا از نوع GameObject بر می گرداند و دستور Instantiate این آبجکت را در بازی می سازد.
#اسکریپت_نویسی #جاوا #باز_کردن #فایل #یونیتی #کد_نویسی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
FileInstantiate.js
246 B
⭕ اسکریپت آماده باز کردن یک فایل به نام enemy از مسیر جاری پروژه (Asset Folder) و ساخت آن در تابع Start
(با توجه به مطالب پست قبلی)
@UnityLearning
(با توجه به مطالب پست قبلی)
@UnityLearning
CreatePlan.js
457 B
⭕ اسکریپت آماده دادن تکسچری که از فایل Glass لود می شود به یک Plan در یونیتی
🔹 این Plan خودش توسط دستورات ساخت آبجکت ساخته می شود و تکسچر به آن تعلق می گیرد.
@UnityLearning
🔹 این Plan خودش توسط دستورات ساخت آبجکت ساخته می شود و تکسچر به آن تعلق می گیرد.
@UnityLearning
⭕دسترسی به انواع داده ای کلاس ها در یونیتی
(معرفی دستور typeof در سی شارپ)
◀ همانطور که می دانید یک #کلاس برای ارائه یک نوع داده ای با ویژگی های جدید ساخته می شود. مثلاً کلاس integer برای تعریف اعداد صحیح ارائه شده و شما می توانید از آن متغیر هایی تعریف کنید. یا به طور مثلا کلاس Transform یک نوع داده ای است که خصوصیت های Transform را به کد نویسی اضافه می کند و باعث می شود بتوانیم در کدها متغیر هایی از نوع آبجکت تعریف کنیم.
⬅ حال برای دسترسی به نوع این کلاس ها در دستوراتی مثل (Resource.Load که در پست قبلی توضیح کامل داده شد) باید بتوانیم نوع این کلاس ها را از نظر برنامه نویسی به دستور معرفی کنیم.
🔹 در #جاوا این کار ساده است کافی است نام کلاس را به بدون هیچ کار اضافی به دستور بدهیم. مثال برای نوع داده GameObject در دستور Resource.Load /👇
Resources.Load("File", GameObject)
👈 در #سی_شارپ برای این کار یک دستور وجود دارد به نام typeof که از آن برای معرفی نوع داده ای یک #کلاس استفاده می شود. در واقــع این دستور نوع داده ای کلاسی که در پارامتر آن داده شده است را بر می گرداند. مثال سی شارپ برای حالت بالا /👇
Resources.Load("File", typeof(GameObject))
🔸 البته در سی شارپ باید برای دستورات انتسابی به متغیر ها از دستور as هم استفاده کرد. به حالت زیر توجه کنید /👇
GameObject Obj ;
Obj =Resources.Load("File", typeof(GameObject)) as GameObject;
🔹 برای این انتساب (دادن خروجی دستور Load به متغیر Obj) در #سی_شارپ باید از کلمه as برای تبدیل نهایی استفاده کرد. اگر کلمه as نوشته شود عمل تبدیل انجام نمی شود و با خطا مواجه خواهید شد.
#اسکریپت_نویسی #جاوا
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
(معرفی دستور typeof در سی شارپ)
◀ همانطور که می دانید یک #کلاس برای ارائه یک نوع داده ای با ویژگی های جدید ساخته می شود. مثلاً کلاس integer برای تعریف اعداد صحیح ارائه شده و شما می توانید از آن متغیر هایی تعریف کنید. یا به طور مثلا کلاس Transform یک نوع داده ای است که خصوصیت های Transform را به کد نویسی اضافه می کند و باعث می شود بتوانیم در کدها متغیر هایی از نوع آبجکت تعریف کنیم.
⬅ حال برای دسترسی به نوع این کلاس ها در دستوراتی مثل (Resource.Load که در پست قبلی توضیح کامل داده شد) باید بتوانیم نوع این کلاس ها را از نظر برنامه نویسی به دستور معرفی کنیم.
🔹 در #جاوا این کار ساده است کافی است نام کلاس را به بدون هیچ کار اضافی به دستور بدهیم. مثال برای نوع داده GameObject در دستور Resource.Load /👇
Resources.Load("File", GameObject)
👈 در #سی_شارپ برای این کار یک دستور وجود دارد به نام typeof که از آن برای معرفی نوع داده ای یک #کلاس استفاده می شود. در واقــع این دستور نوع داده ای کلاسی که در پارامتر آن داده شده است را بر می گرداند. مثال سی شارپ برای حالت بالا /👇
Resources.Load("File", typeof(GameObject))
🔸 البته در سی شارپ باید برای دستورات انتسابی به متغیر ها از دستور as هم استفاده کرد. به حالت زیر توجه کنید /👇
GameObject Obj ;
Obj =Resources.Load("File", typeof(GameObject)) as GameObject;
🔹 برای این انتساب (دادن خروجی دستور Load به متغیر Obj) در #سی_شارپ باید از کلمه as برای تبدیل نهایی استفاده کرد. اگر کلمه as نوشته شود عمل تبدیل انجام نمی شود و با خطا مواجه خواهید شد.
#اسکریپت_نویسی #جاوا
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕️ #آبجکت کمد و تخت خواب
📍برای استفاده در اتاق
🔹با فرمت FBX و Blend آماده جهت استفاده
@UnityLearning
👇دانلود در پست بعدی👇
📍برای استفاده در اتاق
🔹با فرمت FBX و Blend آماده جهت استفاده
@UnityLearning
👇دانلود در پست بعدی👇
⭕ باز کردن محتویات سایت ها در بازی
(دریافت اطلاعات از اینترنت برای استفاده در بازی)
🔹 حال که نحوه باز کردن فایل ها به عنوان آبجکت (مثل عکس، فیلم و...) را از منابع سیستم بیان کردیم، جای آن است که نحوه دسترسی و لود کردن از اینترنت را آموزش دهیم. این کار از یک حالت ساده شروع می شود که قصد داریم در این پســـت توضیح دهیم/👇
✅ عمل کار با اینترنت در یونیتی توسط کلاسی به نام WWW انجام می شود(کلیه حروف بزرگ) بنابراین برای دریافت اطلاعات یک آدرس اینترنتی (URL) از دستورات این #کلاس استفاده می کنیم.
◀ دریافت اطلاعات یک URL در ابتدای تعریف متغیر از این کلاس به شکل زیر انجام می شود (به این کار یعنی مقدار دهی اولیه متغیر از کلاس Constructor گفته می شود)/👇
#جاوا /👇
var net: WWW = new WWW(url);
#سی_شارپ /👇
WWW net= new WWW(url);
yield return net;
👈فرض کنید net نام متغیر است، با این کار اطلاعات کلی url داده شده در متغیر قرار می گیرد. بنابراین url نیز از نوع رشته String بوده و حاوی آدرس معتبر یک سایت اینترنتی است. مثلا
url="https://google.com";
ℹ حال این متغیر (net) دارای اطلاعات خاصی است مثلا اگر URL عکس باشد با پارامتر زیر می توان به این تکسچر دسترسی داشت./👇
net.texture;
🔸 یا با پارامتر text می توان به اطلاعات متنی سایت دسترسی داشت/👇
net.text;
⬅ خروجی این دستور از نوع رشته بوده و حاوی تمام متن های یک صفحه اینترنتی است.
▫ در کلاس WWW یک سری متد برای بررسی برخی مسائل ارائه شده است. مثلا پارامتـــر error که اگـــر دریافت اطلاعات با مشکلی مواجه شود خطای تولید شده در این پارامتر قرار می گیرد./👇
net.error;
👈 اگـــر دریافتِ اطلاعات، بدون مشکل انجام شود این پارامتر برابر null یا "" خواهد بود.
🔸 همچنین پارامتر isDone برای تایید نهایی دانلود انجام می شود. اگر دانلود به صورت کامل و بدون مشکل انجام شود این پارامتر (که از جنس Boolean است) برابر
ـ true می شود. بهترین محل برای استفاده از این دستور برای شرط حلقه هاست یعنی دانلود تا زمانی که تمام نشده کاری انجام نشود و اگر دانلود تمام شد ( net.isDone==true) عمل های بعدی صورت گیرد.
🔹 سایر دستورات تکمیلی مربوط به دسترسی به اینترنت در بازی های یونیتی را در پست های آتی بررسی می کنیم.
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
(دریافت اطلاعات از اینترنت برای استفاده در بازی)
🔹 حال که نحوه باز کردن فایل ها به عنوان آبجکت (مثل عکس، فیلم و...) را از منابع سیستم بیان کردیم، جای آن است که نحوه دسترسی و لود کردن از اینترنت را آموزش دهیم. این کار از یک حالت ساده شروع می شود که قصد داریم در این پســـت توضیح دهیم/👇
✅ عمل کار با اینترنت در یونیتی توسط کلاسی به نام WWW انجام می شود(کلیه حروف بزرگ) بنابراین برای دریافت اطلاعات یک آدرس اینترنتی (URL) از دستورات این #کلاس استفاده می کنیم.
◀ دریافت اطلاعات یک URL در ابتدای تعریف متغیر از این کلاس به شکل زیر انجام می شود (به این کار یعنی مقدار دهی اولیه متغیر از کلاس Constructor گفته می شود)/👇
#جاوا /👇
var net: WWW = new WWW(url);
#سی_شارپ /👇
WWW net= new WWW(url);
yield return net;
👈فرض کنید net نام متغیر است، با این کار اطلاعات کلی url داده شده در متغیر قرار می گیرد. بنابراین url نیز از نوع رشته String بوده و حاوی آدرس معتبر یک سایت اینترنتی است. مثلا
url="https://google.com";
ℹ حال این متغیر (net) دارای اطلاعات خاصی است مثلا اگر URL عکس باشد با پارامتر زیر می توان به این تکسچر دسترسی داشت./👇
net.texture;
🔸 یا با پارامتر text می توان به اطلاعات متنی سایت دسترسی داشت/👇
net.text;
⬅ خروجی این دستور از نوع رشته بوده و حاوی تمام متن های یک صفحه اینترنتی است.
▫ در کلاس WWW یک سری متد برای بررسی برخی مسائل ارائه شده است. مثلا پارامتـــر error که اگـــر دریافت اطلاعات با مشکلی مواجه شود خطای تولید شده در این پارامتر قرار می گیرد./👇
net.error;
👈 اگـــر دریافتِ اطلاعات، بدون مشکل انجام شود این پارامتر برابر null یا "" خواهد بود.
🔸 همچنین پارامتر isDone برای تایید نهایی دانلود انجام می شود. اگر دانلود به صورت کامل و بدون مشکل انجام شود این پارامتر (که از جنس Boolean است) برابر
ـ true می شود. بهترین محل برای استفاده از این دستور برای شرط حلقه هاست یعنی دانلود تا زمانی که تمام نشده کاری انجام نشود و اگر دانلود تمام شد ( net.isDone==true) عمل های بعدی صورت گیرد.
🔹 سایر دستورات تکمیلی مربوط به دسترسی به اینترنت در بازی های یونیتی را در پست های آتی بررسی می کنیم.
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕اسکریپت آماده برای باز و بسته شدن درب های بزرگ
🔸 یک اسکریپت بسیار کاربردی برای شبیه سازی حالت باز و بسته شدن درب های بزرگ (مثل درب آشیانه هواپیما یا درب یک مکانیکی) که به صورت بالا ⬆ و پایین ⬇ رونده باز و بسته شود، را تهیه و آماده کردیم. هدف از این اسکریپت ایجاد حرکت در یک جهت خاص (مثلا برای بالا و پایین رفتن محور y) است.
🔹 این اسکریپت به شکل کاملا کاربردی نوشته شده است و کلیه چک های لازم در آن انجام می شود و نکته مهم این که این اسکریپت را به ساده ترین زبان ممکن طراحی کردیم.
👈 تست هایی که اسکریپت انجام می دهد از این قرار است، ابتدا بررسی می کند فردی که به درب نزدیک شده (در واقع وارد محدوده Trigger شــده) آیا Player است (با بررسی تگ ها) در صورتی که این طور بود درب را باز می کند. همچنین این اسکریپت صبر می کند تا عمل باز و بسته شدن درب کامل انجام شود و سپس عمل بعدی را انجام می دهد (یعنی کاربر نمی تواند به طور همزمان مدام کلید E را فشار دهد تا درب بالا و پایین شود) زمانی که درب بسته است با فشردن کلید E درب باز می شود و تا زمانی که به طور کامل باز نشده عمل دیگری انجام نمی شود و بر عکس اگر درب باز است اسکریپت با فشردن کلید E درب را پایین آورده و آن را می بنند.
🔹 دقت کنید اعداد تنظیمی این اسکریپت را باید بر اساس نیاز تان تغییر دهید (این اسکریپت فرض می کند پایین تر حالت برای درب قرار گیری y برابر 2 است و بالاترین عدد نیز 15 است مسلما در بازی شما این اعداد متفاوت است که باید آنها را حلقه های While تغیـــیر دهید.
⬅ برای تست این اسکریپت از یک Cube به عنوان درب استفاده کنید، به آن Trigger بدهید، تگ بازیکن خود را روی Player تنظیم کنید و اسکریپت را نیز به Cube بدهید. خواهید دید Cube بین yهای 2 تا 15 جابجا می شود و اگر Cube شما مانند درب طراحی شده باشد این کار عمل باز و بسته شدن درب را برایتان انجام می دهد.
❗ در پایان تاکید می گردد، Trigger این درب را باید کاملاً صحیح تنظیم کنید تا زمانی که درب بالا می رود پلیر از محدوده آن خارج نشود، زیرا در این صــورت دیگر با فشردن مجدد کلید E درب بسته نمی شود، زیرا Player دیگر در محدوده Trigger نیست.
#اسکریپت_نویسی #کد_نویسی #جاوا #سی_شارپ
⬇ #دانلود اسکریپت در پست بعدی⬇
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔸 یک اسکریپت بسیار کاربردی برای شبیه سازی حالت باز و بسته شدن درب های بزرگ (مثل درب آشیانه هواپیما یا درب یک مکانیکی) که به صورت بالا ⬆ و پایین ⬇ رونده باز و بسته شود، را تهیه و آماده کردیم. هدف از این اسکریپت ایجاد حرکت در یک جهت خاص (مثلا برای بالا و پایین رفتن محور y) است.
🔹 این اسکریپت به شکل کاملا کاربردی نوشته شده است و کلیه چک های لازم در آن انجام می شود و نکته مهم این که این اسکریپت را به ساده ترین زبان ممکن طراحی کردیم.
👈 تست هایی که اسکریپت انجام می دهد از این قرار است، ابتدا بررسی می کند فردی که به درب نزدیک شده (در واقع وارد محدوده Trigger شــده) آیا Player است (با بررسی تگ ها) در صورتی که این طور بود درب را باز می کند. همچنین این اسکریپت صبر می کند تا عمل باز و بسته شدن درب کامل انجام شود و سپس عمل بعدی را انجام می دهد (یعنی کاربر نمی تواند به طور همزمان مدام کلید E را فشار دهد تا درب بالا و پایین شود) زمانی که درب بسته است با فشردن کلید E درب باز می شود و تا زمانی که به طور کامل باز نشده عمل دیگری انجام نمی شود و بر عکس اگر درب باز است اسکریپت با فشردن کلید E درب را پایین آورده و آن را می بنند.
🔹 دقت کنید اعداد تنظیمی این اسکریپت را باید بر اساس نیاز تان تغییر دهید (این اسکریپت فرض می کند پایین تر حالت برای درب قرار گیری y برابر 2 است و بالاترین عدد نیز 15 است مسلما در بازی شما این اعداد متفاوت است که باید آنها را حلقه های While تغیـــیر دهید.
⬅ برای تست این اسکریپت از یک Cube به عنوان درب استفاده کنید، به آن Trigger بدهید، تگ بازیکن خود را روی Player تنظیم کنید و اسکریپت را نیز به Cube بدهید. خواهید دید Cube بین yهای 2 تا 15 جابجا می شود و اگر Cube شما مانند درب طراحی شده باشد این کار عمل باز و بسته شدن درب را برایتان انجام می دهد.
❗ در پایان تاکید می گردد، Trigger این درب را باید کاملاً صحیح تنظیم کنید تا زمانی که درب بالا می رود پلیر از محدوده آن خارج نشود، زیرا در این صــورت دیگر با فشردن مجدد کلید E درب بسته نمی شود، زیرا Player دیگر در محدوده Trigger نیست.
#اسکریپت_نویسی #کد_نویسی #جاوا #سی_شارپ
⬇ #دانلود اسکریپت در پست بعدی⬇
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
OpenDoor_Ashiane.js
728 B
⭕ اسکریپت آماده برای باز و بسته شدن درب
🔹 درب هایی که به شکل بالا و پایین باز و بسته می شوند.
🔴 کلیه حقوق آموزش های یونیتی لرنینگ محفوظ است.
@UnityLearning
🔹 درب هایی که به شکل بالا و پایین باز و بسته می شوند.
🔴 کلیه حقوق آموزش های یونیتی لرنینگ محفوظ است.
@UnityLearning
⭕️ #آبجکت تونل برای استفاده در راهها به همراه کف خیابان (Road)
🛣 با فرمت Fbx آماده جهت استفاده
آبجکت Tunnel ➕ Road
👇 #دانلود در پست بعدی👇
@UnityLearning
🛣 با فرمت Fbx آماده جهت استفاده
آبجکت Tunnel ➕ Road
👇 #دانلود در پست بعدی👇
@UnityLearning
jwdyrb0rpkow_Tunnel.rar
2 MB
🛣 #دانلود #آبجکت لازم برای ساخت تونل در جاده ها
📍برای بیشتر شدن طول تونل آبجکت را Scale نکنید، بلکه Duplicate کنید و آنرا پشت سر هم تکرار کنید.
@UnityLearning
📍برای بیشتر شدن طول تونل آبجکت را Scale نکنید، بلکه Duplicate کنید و آنرا پشت سر هم تکرار کنید.
@UnityLearning
DownloadTexture.js
467 B
⭕ اسکریپت آماده دانلود یک تکسچر دو بعدی از اینترنت و اختصاص آن به عنوان #تکسچر به یک آبجکت(که کد را به آن متصل شده است)
🔴 اسکریپت ویرایش شده👇
https://t.me/UnityLearning/1098
@UnityLearning
🔴 اسکریپت ویرایش شده👇
https://t.me/UnityLearning/1098
@UnityLearning
⭕ دریافت اطلاعات از اینترنت #ادامه
⬅ با توجه به استقبال بالای کاربران از آمــوزش اتصال بازی به اینترنت، این آموزش ادامه پیدا می کند.
▫ با توجه به مطـــالب قبلی، ادامه دستورات کلاس WWW را به این شرح توضیح می دهیم/👇 (با فــرض اینکه همچنان net از نوع WWW اســت)
🔹با دستــور progress می توان میزان دانلود را بررسی نمود، این متغیر float از 0 تا یک است و اگر برابر 1.0 شود یعنی دانلود به طور کامل صورت گرفته، بنابراین اگر می خواهید میزان دانلود شما به صورت درصدی نمایش داده شود، این متغیر را در 100 ضرب کنید./👇
net.progress;
🔸با #تابع Dispose می توان جلوی دانلود را گــرفت. اگر به هر دلیل لازم بود دانلود دیگر انجام نشود با این دستور می توان دانلود را متوقف کرد. /👇
net.Dispose();
👈 با دستور uploadProgress می توان به میزان آپلود دسترسی داشت، دستورات ارسال اطلاعات به اینترنت (در قالب فرم) را در پســت های بعدی قـــرار خواهیم داد، دستور uploadProgress مقدار اطلاعات آپلود شده در سرور را نمایش می دهد. (این دستور مانند progress اســـت)
#اسکریپت_نویسی #یونیتی #اینترنت
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⬅ با توجه به استقبال بالای کاربران از آمــوزش اتصال بازی به اینترنت، این آموزش ادامه پیدا می کند.
▫ با توجه به مطـــالب قبلی، ادامه دستورات کلاس WWW را به این شرح توضیح می دهیم/👇 (با فــرض اینکه همچنان net از نوع WWW اســت)
🔹با دستــور progress می توان میزان دانلود را بررسی نمود، این متغیر float از 0 تا یک است و اگر برابر 1.0 شود یعنی دانلود به طور کامل صورت گرفته، بنابراین اگر می خواهید میزان دانلود شما به صورت درصدی نمایش داده شود، این متغیر را در 100 ضرب کنید./👇
net.progress;
🔸با #تابع Dispose می توان جلوی دانلود را گــرفت. اگر به هر دلیل لازم بود دانلود دیگر انجام نشود با این دستور می توان دانلود را متوقف کرد. /👇
net.Dispose();
👈 با دستور uploadProgress می توان به میزان آپلود دسترسی داشت، دستورات ارسال اطلاعات به اینترنت (در قالب فرم) را در پســت های بعدی قـــرار خواهیم داد، دستور uploadProgress مقدار اطلاعات آپلود شده در سرور را نمایش می دهد. (این دستور مانند progress اســـت)
#اسکریپت_نویسی #یونیتی #اینترنت
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕ دریافت اطلاعات از اینترنت #نکته
👈 همانطور که در اسکریپت قرار داده شده در کانال مشاهده می کنید، این اسکریپت تصویر را به عنوان تکسچر نمایش نمی دهد. اما علت چیست؟ با این مثال می خواهیم کاربرد صحیح دستور isDone را بیان کنیم.
🔸 علت این مشکل این است که ما در همان لحظه که متغیر را از کلاس WWW می سازیم می خواهیم از تکسچر آن استفاده کنیم، این یعنی هنوز تصویری/ یا هر چیزی، دانلود نشده است و ما به اسکریپت می گوییم، تکسچر را نمایش بده.
🔹 همانطور که قبلا ذکر کردیم دستور isDone زمانی true می شود که دانلود محتویات سایت به طور کامل در متغیر انجام شده است، بنابراین اگـــر ما در اسکریپت تا زمانی که isDone بــرابر true شد تاخیر ایجاد کنیم و سپس دستورات انتساب تکسچر را انجام دهیم، این مشکل حل می شود. به علت اینکه دستور isDone از نوع boolean اســـت بنابراین بهترین راه برای ایجاد تاخیر استفاده از حلقه While است به شکل زیر/👇
while(!www.isDone);
👈 این دستور اجرای اسکریپت را تا زمانی که صفحه اینترنتی کاملا دانلود نشده است در همین خط متوقف می کند. اسکریپت ویرایش شده در پست بعدی قرار می گیرد، این اسکریپت تکسچری را که از URL دانلود می کند به آبجکتی که کد به آن متصل شده است می دهد. URL یک متغیر رشته ای سراسری است که می توانید سایت مورد نظر را در آن وارد کنید.
#اسکریپت_نویسی #اینترنت #جاوا #سی_شارپ
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
👈 همانطور که در اسکریپت قرار داده شده در کانال مشاهده می کنید، این اسکریپت تصویر را به عنوان تکسچر نمایش نمی دهد. اما علت چیست؟ با این مثال می خواهیم کاربرد صحیح دستور isDone را بیان کنیم.
🔸 علت این مشکل این است که ما در همان لحظه که متغیر را از کلاس WWW می سازیم می خواهیم از تکسچر آن استفاده کنیم، این یعنی هنوز تصویری/ یا هر چیزی، دانلود نشده است و ما به اسکریپت می گوییم، تکسچر را نمایش بده.
🔹 همانطور که قبلا ذکر کردیم دستور isDone زمانی true می شود که دانلود محتویات سایت به طور کامل در متغیر انجام شده است، بنابراین اگـــر ما در اسکریپت تا زمانی که isDone بــرابر true شد تاخیر ایجاد کنیم و سپس دستورات انتساب تکسچر را انجام دهیم، این مشکل حل می شود. به علت اینکه دستور isDone از نوع boolean اســـت بنابراین بهترین راه برای ایجاد تاخیر استفاده از حلقه While است به شکل زیر/👇
while(!www.isDone);
👈 این دستور اجرای اسکریپت را تا زمانی که صفحه اینترنتی کاملا دانلود نشده است در همین خط متوقف می کند. اسکریپت ویرایش شده در پست بعدی قرار می گیرد، این اسکریپت تکسچری را که از URL دانلود می کند به آبجکتی که کد به آن متصل شده است می دهد. URL یک متغیر رشته ای سراسری است که می توانید سایت مورد نظر را در آن وارد کنید.
#اسکریپت_نویسی #اینترنت #جاوا #سی_شارپ
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
DownloadTexture.js
382 B
⭕ اسکریپت ویرایش شده برای «دانلود #تکسچر از اینترنت» و انتساب آن به آبجکتی که کد را به آن متصل کرده ایم.
🔹 به همراه دستور While بــرای ایجاد تاخیر
@UnityLearning
🔹 به همراه دستور While بــرای ایجاد تاخیر
@UnityLearning
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️ #آموزش حذف Splash ابتدایی بازی
👈ـSplash همان فیلم کوتاه معرفی بازی است که پیش فرض آرم یونیتی را نمایش می دهد.
#درخواست
@UnityLearning
👈ـSplash همان فیلم کوتاه معرفی بازی است که پیش فرض آرم یونیتی را نمایش می دهد.
#درخواست
@UnityLearning
Unity Learning
OpenDoor_Ashiane.js
OpenDoor_LeftRight.js
839 B
⭕️اسکریپت آماده برای باز و بسته شدن درب هایی که به صورت چپ و راستی باز بسته می شوند.
🔹این اسکریپت مانند اسکریپت قبل است با برخی تفاوت ها که در پست بعدی بیان خواهد شد.
@UnityLearning
🔹این اسکریپت مانند اسکریپت قبل است با برخی تفاوت ها که در پست بعدی بیان خواهد شد.
@UnityLearning
⭕ روش دیگــری برای انجام اعمالی که باید با نزدیک شدن به آبجکت ها انجام گیرد (غیر از روش وقت گیر Trigger)
🔹 در روش های قبل برای انجام این گونه اعمال (مثل باز کردن درب) از Trigger ها استفاده می شد که هم درد سر ساز و هم طراحی آن کمی سخت بود. البته در همینجا خاطر نشان می شود، برخی اعمال باید توسط Trigger انجام شود و جایگزین ندارد. مثل حالت سوار شدن به ماشین که فقط باید زمانی رخ دهد که کاربر در محل مورد نظر ما قـــرار گرفته است.
🔸 برای اعمال دیــگری مثل همین موضوع باز و بسته کردن درب ها روش دیگری ارائه می شود(که در اسکریپت پست قبل مشهود است) و آن محاسبه فاصله آبجکت تا Player است. اگر اسکریپت بتواند به آبجکت Player دسترسی داشته باشد و فاصله او تا درب را محاسبه کند می توانیم با دستور if کاری کنیم هر گاه این فاصله کمتر از یک حد معمول شد، و کلید مورد نظر فشار داده شد، عمل انجام شود. مثلاً درب باز یا بسته شود و یا آژیر خطر فعال شود.
(این روش در اسکریپت کاملا انجام شده است و کلیه دستورات نیز در کانال توضیح داده شده است، برای بدست آوردن آبجکت
ـ Player از دستور FindWithTag استفاده شده است و برای محاسبه فاصلــه از Distance)
👈 دقت کنید این روش برای بازی های چند نفری یا بازی هایی که در یک آن چند Player دارد غیر قابل انجام است و تنها در بازی هایی قابل پیاده سازی است که در آن در حل لحظه تنها یک Player وجود دارد. بنابراین برای انجام اینگونه موارد (انجام عمل در بازی های چند نفری) تنها راه استفاده از Trigger هاست.
✅ مزیت این روش ساده بودن آن است، شما اسکریپتی که نوشتید را به هر آبجکت مشابهی بدهید عمل بدون مشکل انجام می شود، بدون اینکه لازم باشد به آبجکت Trigger بدهید.
❎ عیب این روش اجرای همیشگی اسکریپت است و اگر تعداد عمل ها (مثلا تعداد درب ها) زیاد باشد، سرعت اجرای بازی کاهش میابد چون تمام اسکریپت ها همیشه در حال محاسبه فاصله دو آبجکت هستند و هیچگاه متوقف نمی شوند. اما استفاده از روش Trigger باعث می شود اسکریپت تنها زمانی اجــرا شود که کاراکتر (Player) وارد محدوده شده و در خارج آن هیچ کدی اجرا نمی شود.
#اسکریپت_نویسی #کد_نویسی #جاوا #باز_و_بسته_شدن_درب
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔹 در روش های قبل برای انجام این گونه اعمال (مثل باز کردن درب) از Trigger ها استفاده می شد که هم درد سر ساز و هم طراحی آن کمی سخت بود. البته در همینجا خاطر نشان می شود، برخی اعمال باید توسط Trigger انجام شود و جایگزین ندارد. مثل حالت سوار شدن به ماشین که فقط باید زمانی رخ دهد که کاربر در محل مورد نظر ما قـــرار گرفته است.
🔸 برای اعمال دیــگری مثل همین موضوع باز و بسته کردن درب ها روش دیگری ارائه می شود(که در اسکریپت پست قبل مشهود است) و آن محاسبه فاصله آبجکت تا Player است. اگر اسکریپت بتواند به آبجکت Player دسترسی داشته باشد و فاصله او تا درب را محاسبه کند می توانیم با دستور if کاری کنیم هر گاه این فاصله کمتر از یک حد معمول شد، و کلید مورد نظر فشار داده شد، عمل انجام شود. مثلاً درب باز یا بسته شود و یا آژیر خطر فعال شود.
(این روش در اسکریپت کاملا انجام شده است و کلیه دستورات نیز در کانال توضیح داده شده است، برای بدست آوردن آبجکت
ـ Player از دستور FindWithTag استفاده شده است و برای محاسبه فاصلــه از Distance)
👈 دقت کنید این روش برای بازی های چند نفری یا بازی هایی که در یک آن چند Player دارد غیر قابل انجام است و تنها در بازی هایی قابل پیاده سازی است که در آن در حل لحظه تنها یک Player وجود دارد. بنابراین برای انجام اینگونه موارد (انجام عمل در بازی های چند نفری) تنها راه استفاده از Trigger هاست.
✅ مزیت این روش ساده بودن آن است، شما اسکریپتی که نوشتید را به هر آبجکت مشابهی بدهید عمل بدون مشکل انجام می شود، بدون اینکه لازم باشد به آبجکت Trigger بدهید.
❎ عیب این روش اجرای همیشگی اسکریپت است و اگر تعداد عمل ها (مثلا تعداد درب ها) زیاد باشد، سرعت اجرای بازی کاهش میابد چون تمام اسکریپت ها همیشه در حال محاسبه فاصله دو آبجکت هستند و هیچگاه متوقف نمی شوند. اما استفاده از روش Trigger باعث می شود اسکریپت تنها زمانی اجــرا شود که کاراکتر (Player) وارد محدوده شده و در خارج آن هیچ کدی اجرا نمی شود.
#اسکریپت_نویسی #کد_نویسی #جاوا #باز_و_بسته_شدن_درب
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕️ انجام اعمال مربوط به ماتریس ها
📟 گاهی اوقات در ساخت بازی لازم است به محاسبات ماتریسی دسترسی داشته باشیم. همانطور که برای انجام اعمال ریاضی از mathf استفاده میشود، برای انجام اعمال ماتریسی از #کلاس Matrix4x4 استفاده میشود. این کلاس کلیه محاسبات لازم ماتریسی را انجام میدهد(البته ماتریس 4 در 4)
💡این گونه محاسبات در اعمال حرکتی و چرخشی(Vector3 و Quarternion) بسیار مورد استفاده قرار میگیرند.
📍به طور #مثال با دستور determinant دترمینان یک متغیر که از نوع ماتریسی است را بر می گرداند. این متغیر (دترمینان) از نوع float است.
▫️برای محاسبه معکوس یک ماتریس نیز از inverse استفاده میشود که خروجی آن از نوع ماتریسی است (Matrix4x4)
🔜 در سایر پست ها نحوه کار با متغیر های ماتریسی را بیشتر بررسی خواهیم کرد.
#اسکریپت_نویسی #جاوا #یونیتی #ماتریس
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
📟 گاهی اوقات در ساخت بازی لازم است به محاسبات ماتریسی دسترسی داشته باشیم. همانطور که برای انجام اعمال ریاضی از mathf استفاده میشود، برای انجام اعمال ماتریسی از #کلاس Matrix4x4 استفاده میشود. این کلاس کلیه محاسبات لازم ماتریسی را انجام میدهد(البته ماتریس 4 در 4)
💡این گونه محاسبات در اعمال حرکتی و چرخشی(Vector3 و Quarternion) بسیار مورد استفاده قرار میگیرند.
📍به طور #مثال با دستور determinant دترمینان یک متغیر که از نوع ماتریسی است را بر می گرداند. این متغیر (دترمینان) از نوع float است.
▫️برای محاسبه معکوس یک ماتریس نیز از inverse استفاده میشود که خروجی آن از نوع ماتریسی است (Matrix4x4)
🔜 در سایر پست ها نحوه کار با متغیر های ماتریسی را بیشتر بررسی خواهیم کرد.
#اسکریپت_نویسی #جاوا #یونیتی #ماتریس
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢