⭕️ انجام اعمال مربوط به ماتریس ها
📟 گاهی اوقات در ساخت بازی لازم است به محاسبات ماتریسی دسترسی داشته باشیم. همانطور که برای انجام اعمال ریاضی از mathf استفاده میشود، برای انجام اعمال ماتریسی از #کلاس Matrix4x4 استفاده میشود. این کلاس کلیه محاسبات لازم ماتریسی را انجام میدهد(البته ماتریس 4 در 4)
💡این گونه محاسبات در اعمال حرکتی و چرخشی(Vector3 و Quarternion) بسیار مورد استفاده قرار میگیرند.
📍به طور #مثال با دستور determinant دترمینان یک متغیر که از نوع ماتریسی است را بر می گرداند. این متغیر (دترمینان) از نوع float است.
▫️برای محاسبه معکوس یک ماتریس نیز از inverse استفاده میشود که خروجی آن از نوع ماتریسی است (Matrix4x4)
🔜 در سایر پست ها نحوه کار با متغیر های ماتریسی را بیشتر بررسی خواهیم کرد.
#اسکریپت_نویسی #جاوا #یونیتی #ماتریس
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
📟 گاهی اوقات در ساخت بازی لازم است به محاسبات ماتریسی دسترسی داشته باشیم. همانطور که برای انجام اعمال ریاضی از mathf استفاده میشود، برای انجام اعمال ماتریسی از #کلاس Matrix4x4 استفاده میشود. این کلاس کلیه محاسبات لازم ماتریسی را انجام میدهد(البته ماتریس 4 در 4)
💡این گونه محاسبات در اعمال حرکتی و چرخشی(Vector3 و Quarternion) بسیار مورد استفاده قرار میگیرند.
📍به طور #مثال با دستور determinant دترمینان یک متغیر که از نوع ماتریسی است را بر می گرداند. این متغیر (دترمینان) از نوع float است.
▫️برای محاسبه معکوس یک ماتریس نیز از inverse استفاده میشود که خروجی آن از نوع ماتریسی است (Matrix4x4)
🔜 در سایر پست ها نحوه کار با متغیر های ماتریسی را بیشتر بررسی خواهیم کرد.
#اسکریپت_نویسی #جاوا #یونیتی #ماتریس
〰〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🚀 #آبجکت موشک هوا به هوا
🛩 قابل استفاده برای موشک هواپیما های جنگی
⚜فرمت های مختلف آبجکت در دسترس است.
🔰دانلود در پست بعدی🔰
@UnityLearning
🛩 قابل استفاده برای موشک هواپیما های جنگی
⚜فرمت های مختلف آبجکت در دسترس است.
🔰دانلود در پست بعدی🔰
@UnityLearning
i19xown45atc_AIM120DMissile.rar
10.2 MB
⭕️ #آبجکت آماده برای موشک هواپیما های جنگی
AIM-120D Missile
🔹با فرمت های مختلف 3ds fbx obj و...
@UnityLearning
AIM-120D Missile
🔹با فرمت های مختلف 3ds fbx obj و...
@UnityLearning
🔴 #خبر مهم
🔹وزیر ارتباطات: در مورد بازی نهنگ آبی اطلاع رسانی کنید، بازی چالش نهنگ آبی به ایران نمیآید.
🐳 نهنگ آبی بازیی که در سال 2013 ارائه شد یک بازی چالش بر انگیز است که در کشور های خاصی عرضه شد. در این بازی از شما یک سری عمل خواسته شده و شما باید آنرا در طول روز یا شب انجام دهید. مثلا از شما می خواهد با چاقو🔪 روی دست خود یک شکل بکشید و سپس باید از طرح خود عکس بگیرید تا به مرحله بعد بروید. این بازی که باعث تاثیر گذاری شدید روی روح و روان بازی کنان می شود در مراحل پایانی خواستار خودکشی ☠ افراد میگردد. اصلا نام بازی از همین موضوع گرفته شده و اشاره به خودکشی نهنگ ها دارد.
✅ لطفا این مطلب را #انتشار_دهید تا دیگران نیز از ماهیت این بازی با خبر شوند.
@UnityLearning
🔹وزیر ارتباطات: در مورد بازی نهنگ آبی اطلاع رسانی کنید، بازی چالش نهنگ آبی به ایران نمیآید.
🐳 نهنگ آبی بازیی که در سال 2013 ارائه شد یک بازی چالش بر انگیز است که در کشور های خاصی عرضه شد. در این بازی از شما یک سری عمل خواسته شده و شما باید آنرا در طول روز یا شب انجام دهید. مثلا از شما می خواهد با چاقو🔪 روی دست خود یک شکل بکشید و سپس باید از طرح خود عکس بگیرید تا به مرحله بعد بروید. این بازی که باعث تاثیر گذاری شدید روی روح و روان بازی کنان می شود در مراحل پایانی خواستار خودکشی ☠ افراد میگردد. اصلا نام بازی از همین موضوع گرفته شده و اشاره به خودکشی نهنگ ها دارد.
✅ لطفا این مطلب را #انتشار_دهید تا دیگران نیز از ماهیت این بازی با خبر شوند.
@UnityLearning
⭕️باز شدن صفحه کلید لمسی در بازی
⌨ در یونیتی برای باز شدن صفحه کلید لمسی گوشی های موبایل از کلاس TouchScreenKeyboard استفاده میشود، این کلاس با توجه به نوع سیستم عامل گوشی (یعنی iOS ، #اندروید ، ویندوز فون و...) صفحه کلید مورد نظر را باز میکند. برای باز شدن صفحه کلید از دستور Open استفاده میشود. این دستور پارامتر های بسیاری دارد که دو پارامتر اول از همه مهمتر هستند.
🖱پارامتر اول متن اولیه برای ویرایش است (یعنی این کیبورد به طور پیش فرض یک متن را به بازی (محل نوشتن) ارسال میکند معمولا این پارامتر خالی است ( "" )
💡پارامتر دوم نوع صفحه کلید است، مثلا صفحه کلید عددی گوشی یا صفحه کلید متنی و... این پارامتر ورودی های بسیاری دارد که همه آنها را در یک اسکریپت آماده قرار میدهیم تا آنها را مشاهده کنید. به طور مثال اگر بخواهیم صفحه کلید عددی گوشی باز شود دستورات زیر را مینویسیم/👇
var keyboard: TouchScreenKeyboard;
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.NumberPad);
(ابتدا یک متغیر از کلاس تعریف کرده و سپس آنرا برابر دستور Open قرار میدهیم)
📍 #کلاس TouchScreenKeyboard دستورات بسیاری برای بهره گیری از حداکثر قابلیت های صفحه کلید گوشی ها دارد که در پست های بعدی توضیح داده خواهد شد.
🔘 اسکریپت انواع حالات صفحه کلید که این کار را توسط انتخاب دکمه ها انجام میدهد(یعنی شما در ابتدا یکی از دکمه ها را انتخاب کنید و صفحه کلید مورد نظر باز شود) در پست بعدی قرار خواهد گرفت.
👈 #ادامه_دارد
#اسکریپت_نویسی #جاوا #یونیتی #صفحه_کلید
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⌨ در یونیتی برای باز شدن صفحه کلید لمسی گوشی های موبایل از کلاس TouchScreenKeyboard استفاده میشود، این کلاس با توجه به نوع سیستم عامل گوشی (یعنی iOS ، #اندروید ، ویندوز فون و...) صفحه کلید مورد نظر را باز میکند. برای باز شدن صفحه کلید از دستور Open استفاده میشود. این دستور پارامتر های بسیاری دارد که دو پارامتر اول از همه مهمتر هستند.
🖱پارامتر اول متن اولیه برای ویرایش است (یعنی این کیبورد به طور پیش فرض یک متن را به بازی (محل نوشتن) ارسال میکند معمولا این پارامتر خالی است ( "" )
💡پارامتر دوم نوع صفحه کلید است، مثلا صفحه کلید عددی گوشی یا صفحه کلید متنی و... این پارامتر ورودی های بسیاری دارد که همه آنها را در یک اسکریپت آماده قرار میدهیم تا آنها را مشاهده کنید. به طور مثال اگر بخواهیم صفحه کلید عددی گوشی باز شود دستورات زیر را مینویسیم/👇
var keyboard: TouchScreenKeyboard;
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.NumberPad);
(ابتدا یک متغیر از کلاس تعریف کرده و سپس آنرا برابر دستور Open قرار میدهیم)
📍 #کلاس TouchScreenKeyboard دستورات بسیاری برای بهره گیری از حداکثر قابلیت های صفحه کلید گوشی ها دارد که در پست های بعدی توضیح داده خواهد شد.
🔘 اسکریپت انواع حالات صفحه کلید که این کار را توسط انتخاب دکمه ها انجام میدهد(یعنی شما در ابتدا یکی از دکمه ها را انتخاب کنید و صفحه کلید مورد نظر باز شود) در پست بعدی قرار خواهد گرفت.
👈 #ادامه_دارد
#اسکریپت_نویسی #جاوا #یونیتی #صفحه_کلید
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
Touch_Screen_Keyboard.js
1.7 KB
⭕️ اسکریپت آماده باز شدن صفحه کلید لمسی
🔹نمایش انواع صفحه کلید لمسی با انتخاب توسط کاربر
🔸خروجی فقط در موبایل ها قابل نمایش است.
@UnityLearning
🔹نمایش انواع صفحه کلید لمسی با انتخاب توسط کاربر
🔸خروجی فقط در موبایل ها قابل نمایش است.
@UnityLearning
#نکته #برنامه_نویسی
⭕️ توضیحاتی در مورد کلاس Vector3
🔹مطالب مربوط به حرکت توسط کلاس Vector3
👈همانطور که می دانیم این کلاس برای انجام عملیات مربوط به صفحه مختصات سه بعدی(دارای محور های xyz) به کار میرود.
🔸حال به طور #مثال فرض کنید می خواهید یک شی را جابجا کنید، این کار در ساده ترین روش با تغییر پارامتر های xyz از پارامتر position مربوط به کلاس transform قابل انجام است. مثلا دستور زیر در هر بار اجرا 5 واحد به مقدار x از position آبجکت جاری اضافه میکند/👇
transform.position.x += 5 ;
🔹اما اکنون فرض کنید یک آبجکت تنها به یک سمت حرکت کند، مثلا روبرو . در این صورت استفاده از دستور فوق باعث حرکت آبجکت میشود ولی نه همیشه به سمت روبرو (چون نسبت چرخش آبجکت متفاوت است به بیان دیگر چون آبجکت میچرخد دیگر حرکت او در محور x باعث حرکت به سمت روبرو نمیشود. راه حل این مسئله استفاده از دستور و #کلاس Vector3 است (تفاوتی در محل استفاده از دستور نیست، یعنی فرقی نمی کند از دستور Translate برای جابجایی استفاده کنیم یا از دستورات دیگر، مهم استفاده از کلاس Vector3 است. به طور مثال دستور زیر آبجکت مورد نظر را (که کد به آن متصل شده است) به سمت روبرو جابجا میکند (پیش فرض 1 واحد و اگر بخواهید مقدار بیشتر شود باید خروجی دستور Vector3 را در آن مقدار ضرب کنید.
transform.position += Vector3.forward ;
transform.Translate(Vector3.forward);
▪️خروجی هر دو دستور بالا یکسان بوده و نهایتا آبجکت به سمت روبرو حرکت میکند (باید توجه کنید اگر میخواهید از این دستورات در تابع Update استفاده کنید باید مقادیر Vector3.forward را در Time.deltaTime ضرب کنید تا از نظر زمانی خروجی در تمام دستگاه ها یکسان گردد)
👈اکنون سایر دستورات که مربوط به کلاس Vector3 است و مربوط به حرکت به جهات مختلف میشود را بررسی میکنیم.
🔹حرکت به سمت عقب (مخالف جهت روبرو)
Vector3.back;
🔹حرکت به سمت بالا
Vector3.up;
🔹حرکت به سمت پایین
Vector3.down;
🔹حرکت به سمت راست
Vector3.right;
🔹حرکت به سمت چپ
Vector3.left;
🔹یک واحد حرکت به تمام جهات (xyz)
Vector3.one ;
#اسکریپت_نویسی #جاوا #سی_شارپ
❗️نکته بسیار مهم: یک بردار در ریاضیات یک جهت و یک طول دارد، در واقع برای نمایش یک بردار در صفحه مختصات لازم است جهت و طول آن مشخص شود، بنابر این در اصل دستورات ذکر شده بردار های جهتی تولید شده هستند که باعث حرکت آبجکت(ها) در جهت و به میزان طول خود میشوند. طول پیش فرض تمامی بردار های بالا 1 واحد است و با ضرب عدد در آن میتوان مقدار آن را تغییر داد.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ توضیحاتی در مورد کلاس Vector3
🔹مطالب مربوط به حرکت توسط کلاس Vector3
👈همانطور که می دانیم این کلاس برای انجام عملیات مربوط به صفحه مختصات سه بعدی(دارای محور های xyz) به کار میرود.
🔸حال به طور #مثال فرض کنید می خواهید یک شی را جابجا کنید، این کار در ساده ترین روش با تغییر پارامتر های xyz از پارامتر position مربوط به کلاس transform قابل انجام است. مثلا دستور زیر در هر بار اجرا 5 واحد به مقدار x از position آبجکت جاری اضافه میکند/👇
transform.position.x += 5 ;
🔹اما اکنون فرض کنید یک آبجکت تنها به یک سمت حرکت کند، مثلا روبرو . در این صورت استفاده از دستور فوق باعث حرکت آبجکت میشود ولی نه همیشه به سمت روبرو (چون نسبت چرخش آبجکت متفاوت است به بیان دیگر چون آبجکت میچرخد دیگر حرکت او در محور x باعث حرکت به سمت روبرو نمیشود. راه حل این مسئله استفاده از دستور و #کلاس Vector3 است (تفاوتی در محل استفاده از دستور نیست، یعنی فرقی نمی کند از دستور Translate برای جابجایی استفاده کنیم یا از دستورات دیگر، مهم استفاده از کلاس Vector3 است. به طور مثال دستور زیر آبجکت مورد نظر را (که کد به آن متصل شده است) به سمت روبرو جابجا میکند (پیش فرض 1 واحد و اگر بخواهید مقدار بیشتر شود باید خروجی دستور Vector3 را در آن مقدار ضرب کنید.
transform.position += Vector3.forward ;
transform.Translate(Vector3.forward);
▪️خروجی هر دو دستور بالا یکسان بوده و نهایتا آبجکت به سمت روبرو حرکت میکند (باید توجه کنید اگر میخواهید از این دستورات در تابع Update استفاده کنید باید مقادیر Vector3.forward را در Time.deltaTime ضرب کنید تا از نظر زمانی خروجی در تمام دستگاه ها یکسان گردد)
👈اکنون سایر دستورات که مربوط به کلاس Vector3 است و مربوط به حرکت به جهات مختلف میشود را بررسی میکنیم.
🔹حرکت به سمت عقب (مخالف جهت روبرو)
Vector3.back;
🔹حرکت به سمت بالا
Vector3.up;
🔹حرکت به سمت پایین
Vector3.down;
🔹حرکت به سمت راست
Vector3.right;
🔹حرکت به سمت چپ
Vector3.left;
🔹یک واحد حرکت به تمام جهات (xyz)
Vector3.one ;
#اسکریپت_نویسی #جاوا #سی_شارپ
❗️نکته بسیار مهم: یک بردار در ریاضیات یک جهت و یک طول دارد، در واقع برای نمایش یک بردار در صفحه مختصات لازم است جهت و طول آن مشخص شود، بنابر این در اصل دستورات ذکر شده بردار های جهتی تولید شده هستند که باعث حرکت آبجکت(ها) در جهت و به میزان طول خود میشوند. طول پیش فرض تمامی بردار های بالا 1 واحد است و با ضرب عدد در آن میتوان مقدار آن را تغییر داد.
〰〰〰〰〰〰〰〰
⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕ سِیو کردن بازی ( Game Saving)
🔸 یکی از مهمــترین شرایطی که بازی ها می توانند داشته باشد، قابلیت ذخیره (سِیو) در آنهاست. سیو در بازی می تواند در حالـــت های متفاوتی اتفاق بیافتد. مثـــلاً سیو مراحل بازی یا سیو تمام بخش های بازی در زمان زدن گزینه Save توسط کاربر.
ℹ ابتدا ساده ترین روش سیو یعنی سیو مراحل بازی را، آن هم با ساده ترین روش بیان می کنیم. با این کار می خواهیم بازیکن در هر سیستمی به هر مرحله ای رفت، آن مرحله سیو شود و اگـــر مجدداً بازی را باز کــرد، بازی از همان مرحله برایش باز شود.
🔹 ذخیره مرحله بازی را روی #فایل انجام می دهیم. (فایل متنی) بنابراین اگـــر در مورد ذخیره فایل متنی مطالب را نمی دانید پست مربوطه را مطالعه کنید. /👇
https://telegram.me/UnityLearning/458
⬅ بنابراین کافی است زمانی که کاربر به مرحله جدید می رود (حال در تابع Start آن مرحله یا توابع دیگر) شماره مرحله یا نام آن را در یک فایل که برای این کار (سیو بازی) ساخته می شود، فـــرار دهیم و همیشه در ابتدای بازی یک اسکریپت داشته باشیم که دستور
Application.LoadLevel
را با آن (نام یا شماره مرحله) صدا بزند، به همین راحتی می توان کاری کرد که بازی از ابتدا از آخرین مرحله ای که کاربر رفته است باز شود. (اسکریپت های آماده این کار در پست های بعدی قرار خواهند گرفت.)
▫ در صورتی که به یاد داشته باشید در آموزش مربوط به فایل، اسکریپت بسیار کاربردی برای ذخیره فایل متنی در مسیر داده شده و همچنین خواندن از آن و قرار دادن متن در متغیر رشته ای را قرار دادیم به کمک این توابع به راحتی عمل نوشتن نام و یا شماره مرحله در فایل امکان پذیر است، مثلا به کمک دستورات زیر فایلی را می سازیم که شامل شماره مرحله بازی است/👇 (دقت کنید فرض بر این است که توابع WriteFile و ReadFile که خودمان نوشتیم را به اسکریپت داده ایم.)
WriteFile(Application.dataPath+"\\Save.txt",Application.loadedLevel.ToString());
🔹 این دستور شماره مرحله جاری را در یک فایل به نام Save.txt در مسیر جاری بازی (متفاوت برای پلتفرم های مختلف) ذخیره می کند.
👈 با دستور زیر هم می توانید این شماره را در یک String قرار دهید و بر اساس آن تصمیم بگیرید که چه مرحله load شود/👇
var Level=ReadFile(Application.dataPath+"\\Save.txt");
🔸 متغیر Level از نوع رشته ای و شامل نام فایل مورد نظر می باشد. البته باید دقت کرد که این فایل باید وجود داشــته باشد (در صورتی که وجود نداشته باشد این دستور با خطا مواجه می گردد بنابراین باید دقت کرد که دستور در چه محلی صدا زده می شود.)
🔹 اسکریپت آماده تمام مطالبی که بیان شد، در کانال و در پست های بـــعدی قرار خواهد گرفت. این اسکریپت ها شامل 1- اسکریپت برای ذخیره شماره مرحله بازی در یک فایل در محل لود شدن مرحله بعد است (یعنی زمانی که کاربر به مرحله بعد می رود شماره آن در فایل ذخیره شود) 2- اسکریپت بار گزاری بازی از روی فایل ذخیره شده (تابع Start) و اجرای مرحله مورد نظر است.
#اسکرپیت_نویسی #کد_نویسی #جاوا #سیو_کردن_بازی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔸 یکی از مهمــترین شرایطی که بازی ها می توانند داشته باشد، قابلیت ذخیره (سِیو) در آنهاست. سیو در بازی می تواند در حالـــت های متفاوتی اتفاق بیافتد. مثـــلاً سیو مراحل بازی یا سیو تمام بخش های بازی در زمان زدن گزینه Save توسط کاربر.
ℹ ابتدا ساده ترین روش سیو یعنی سیو مراحل بازی را، آن هم با ساده ترین روش بیان می کنیم. با این کار می خواهیم بازیکن در هر سیستمی به هر مرحله ای رفت، آن مرحله سیو شود و اگـــر مجدداً بازی را باز کــرد، بازی از همان مرحله برایش باز شود.
🔹 ذخیره مرحله بازی را روی #فایل انجام می دهیم. (فایل متنی) بنابراین اگـــر در مورد ذخیره فایل متنی مطالب را نمی دانید پست مربوطه را مطالعه کنید. /👇
https://telegram.me/UnityLearning/458
⬅ بنابراین کافی است زمانی که کاربر به مرحله جدید می رود (حال در تابع Start آن مرحله یا توابع دیگر) شماره مرحله یا نام آن را در یک فایل که برای این کار (سیو بازی) ساخته می شود، فـــرار دهیم و همیشه در ابتدای بازی یک اسکریپت داشته باشیم که دستور
Application.LoadLevel
را با آن (نام یا شماره مرحله) صدا بزند، به همین راحتی می توان کاری کرد که بازی از ابتدا از آخرین مرحله ای که کاربر رفته است باز شود. (اسکریپت های آماده این کار در پست های بعدی قرار خواهند گرفت.)
▫ در صورتی که به یاد داشته باشید در آموزش مربوط به فایل، اسکریپت بسیار کاربردی برای ذخیره فایل متنی در مسیر داده شده و همچنین خواندن از آن و قرار دادن متن در متغیر رشته ای را قرار دادیم به کمک این توابع به راحتی عمل نوشتن نام و یا شماره مرحله در فایل امکان پذیر است، مثلا به کمک دستورات زیر فایلی را می سازیم که شامل شماره مرحله بازی است/👇 (دقت کنید فرض بر این است که توابع WriteFile و ReadFile که خودمان نوشتیم را به اسکریپت داده ایم.)
WriteFile(Application.dataPath+"\\Save.txt",Application.loadedLevel.ToString());
🔹 این دستور شماره مرحله جاری را در یک فایل به نام Save.txt در مسیر جاری بازی (متفاوت برای پلتفرم های مختلف) ذخیره می کند.
👈 با دستور زیر هم می توانید این شماره را در یک String قرار دهید و بر اساس آن تصمیم بگیرید که چه مرحله load شود/👇
var Level=ReadFile(Application.dataPath+"\\Save.txt");
🔸 متغیر Level از نوع رشته ای و شامل نام فایل مورد نظر می باشد. البته باید دقت کرد که این فایل باید وجود داشــته باشد (در صورتی که وجود نداشته باشد این دستور با خطا مواجه می گردد بنابراین باید دقت کرد که دستور در چه محلی صدا زده می شود.)
🔹 اسکریپت آماده تمام مطالبی که بیان شد، در کانال و در پست های بـــعدی قرار خواهد گرفت. این اسکریپت ها شامل 1- اسکریپت برای ذخیره شماره مرحله بازی در یک فایل در محل لود شدن مرحله بعد است (یعنی زمانی که کاربر به مرحله بعد می رود شماره آن در فایل ذخیره شود) 2- اسکریپت بار گزاری بازی از روی فایل ذخیره شده (تابع Start) و اجرای مرحله مورد نظر است.
#اسکرپیت_نویسی #کد_نویسی #جاوا #سیو_کردن_بازی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
LoadLevel_Save.js
889 B
⭕️اسکریپت سیو کردن مرحله (در هنگام لود مرحله بعد) در مسیر جاری بازی و در فایل Save.txt
🔹ما این کار را با یک Button انجام داده ایم، شما هر وقت لازم بود مرحله بعدی لود شود، تابع را صدا بزنید.
🔹ما این کار را با یک Button انجام داده ایم، شما هر وقت لازم بود مرحله بعدی لود شود، تابع را صدا بزنید.
LoadLevel_FromFile.js
664 B
⭕️اسکریپت لود کردن مرحله بازی از روی فایل Save.txt
که البته برای شروع اولیه باید ابتدا مقدار 0 در آن باشد. (فایل را دستی بسازید)
🔹این اسکریپت را میتوانید به یک GameObject خالی در مرحله اول بدهید.
که البته برای شروع اولیه باید ابتدا مقدار 0 در آن باشد. (فایل را دستی بسازید)
🔹این اسکریپت را میتوانید به یک GameObject خالی در مرحله اول بدهید.
🔴 #خبر
☠ فیلمی در شبکه های اجتماعی مبنی بر خودکشی افرادی ایرانی که بازی چالش نهنگ آبی را بازی کردند و به مراحل پایانی رسیده اند، منتشر شده است که البته هنوز توسط پلیس و وزارت ارتباطات تأیید نشده است. اما مسئله تأیید شدن یا نشدن فیلم نیست بلکه مسئله اصلی درخواست مطلع کردن جامعه برای تهدیدی است که این بازی برای جوانان ایجاد میکند. لطفا با انتشار مطالب مربوط به بیانِ مضرات این بازی از خطرات آن جلوگیری کنید.
https://t.me/UnityLearning/1106
@UnityLearning
☠ فیلمی در شبکه های اجتماعی مبنی بر خودکشی افرادی ایرانی که بازی چالش نهنگ آبی را بازی کردند و به مراحل پایانی رسیده اند، منتشر شده است که البته هنوز توسط پلیس و وزارت ارتباطات تأیید نشده است. اما مسئله تأیید شدن یا نشدن فیلم نیست بلکه مسئله اصلی درخواست مطلع کردن جامعه برای تهدیدی است که این بازی برای جوانان ایجاد میکند. لطفا با انتشار مطالب مربوط به بیانِ مضرات این بازی از خطرات آن جلوگیری کنید.
https://t.me/UnityLearning/1106
@UnityLearning
🌹میلاد با سعادت حضرت امام کاظم، باب الحوائج را تبریک میگوییم.
🌷السلام علیک یا اباالحسن یا موسی بن جعفر
🌺برایتان بهترین لحظه ها را آرزومندیم.
🌸 @UnityLearning
🌷السلام علیک یا اباالحسن یا موسی بن جعفر
🌺برایتان بهترین لحظه ها را آرزومندیم.
🌸 @UnityLearning
🔹 نکاتی در رابطه با ساخت بازی
⭕ معرفی چند نکته برای برنامه نویسی بهتـــر و کاراتـــر در #یونیتی
🔹 همیشه سعی کنید، کدهایی که عملکرد اجرایی برای آبجکت خاصی ندارند را به Empty GameObject هایی با نام صحیح بدهید، منظور از این اسکریپت ها، اسکریپت هایی هستند که کاری روی آّبجکت خاصی انجام نمی دهند (مثل اسکریپت ساخت منو)- زیاد شدن این اسکریپت ها و عدم رعایت این موضوع باعث سردرگمی بازی ساز برای پیدا کردن آنها می شود.
🔸 اگــــر تکسچرهایی که در اختیار دارید، کیفیت بالایی ندارند و یا اینکه برای سایز کوچک طراحی شده اند، از کنار هم گذاشتن آبجکت ها برای ساخت یک آبجکت بزرگ استفاده کنید تا تکسچر آبجکت کیفیت خود را حفظ کند و بازی زیباتر به نظر برسد.
🔹 در اکثر مواقع سعی کنید، آبجکت های خود را دسته بندی کنید، برای دسته بندی یک سری آبجکت بعد از انتخاب آنها در #پنجره Hierarchy آنها را روی یک GameObject خالی درگ کنید، با این کار همه آبجکت ها به عنوان زیر مجموعه آبجکت مذکور خواهند شد و عملیاتی مثل جابجایی، چرخش و بزرگ کردن آن روی همه آبجکت های زیر مجموعه (فرزند-Child) اعمال می شود. حسن اصلی این کار شلوغ نشدن Hierarchy و دسترسی آسان به آبجکت هاست.
🔸 به برخی Warning هایی که در پنجره Debug نوشته می شود، توجه کنید. همه این هشدار ها قابل چشم پوشی نیستند و عمل کردن به آنها می تواند سرعت زیادی به انجام بازی بدهد.
🔹 همانطور که قبلا هم توضیح داده ایم ، سعی کنید در برنامه نویسی از توابعی که همیشه در حال اجرا هستند کمتر استفاده کنید (البته در برخی شرایط استفاده از آنها اجتناب ناپذیر است، اما سعی کنید تا جایی که می شود از آنها استفاده نگردد)
🔸 سعی کنید کدهایی که می نویسید، به صورت بهینه شده باشد. کد بهینه شده از نظر اشغال کردن منابع (مثل CPU پردازشی- Ram حافظه و...) کمترین میزان را برای بهترین نتیجه انتخاب می کنند. یعنی مثلا در آنها از انجام حلقه های بی مورد جلوگیری شده است که سرعت پردازش کد را بالا می برد یا میزان متغیرهای لازم برای اسکریپت را به حداقل رسانده که این حافظه رم مصرفی بازی را کاهش می دهد.
❗ عدم رعایت این موارد باعث می شود، بازی ساخته شده بدون دلیل با بهترین قابلیت(مد نظر) کار نکند و نتیجه مناسب از ساخت بازی توسط شما حاصل نمی شود.
#اسکریپت_نویسی #نکته #برنامه #یونیتی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕ معرفی چند نکته برای برنامه نویسی بهتـــر و کاراتـــر در #یونیتی
🔹 همیشه سعی کنید، کدهایی که عملکرد اجرایی برای آبجکت خاصی ندارند را به Empty GameObject هایی با نام صحیح بدهید، منظور از این اسکریپت ها، اسکریپت هایی هستند که کاری روی آّبجکت خاصی انجام نمی دهند (مثل اسکریپت ساخت منو)- زیاد شدن این اسکریپت ها و عدم رعایت این موضوع باعث سردرگمی بازی ساز برای پیدا کردن آنها می شود.
🔸 اگــــر تکسچرهایی که در اختیار دارید، کیفیت بالایی ندارند و یا اینکه برای سایز کوچک طراحی شده اند، از کنار هم گذاشتن آبجکت ها برای ساخت یک آبجکت بزرگ استفاده کنید تا تکسچر آبجکت کیفیت خود را حفظ کند و بازی زیباتر به نظر برسد.
🔹 در اکثر مواقع سعی کنید، آبجکت های خود را دسته بندی کنید، برای دسته بندی یک سری آبجکت بعد از انتخاب آنها در #پنجره Hierarchy آنها را روی یک GameObject خالی درگ کنید، با این کار همه آبجکت ها به عنوان زیر مجموعه آبجکت مذکور خواهند شد و عملیاتی مثل جابجایی، چرخش و بزرگ کردن آن روی همه آبجکت های زیر مجموعه (فرزند-Child) اعمال می شود. حسن اصلی این کار شلوغ نشدن Hierarchy و دسترسی آسان به آبجکت هاست.
🔸 به برخی Warning هایی که در پنجره Debug نوشته می شود، توجه کنید. همه این هشدار ها قابل چشم پوشی نیستند و عمل کردن به آنها می تواند سرعت زیادی به انجام بازی بدهد.
🔹 همانطور که قبلا هم توضیح داده ایم ، سعی کنید در برنامه نویسی از توابعی که همیشه در حال اجرا هستند کمتر استفاده کنید (البته در برخی شرایط استفاده از آنها اجتناب ناپذیر است، اما سعی کنید تا جایی که می شود از آنها استفاده نگردد)
🔸 سعی کنید کدهایی که می نویسید، به صورت بهینه شده باشد. کد بهینه شده از نظر اشغال کردن منابع (مثل CPU پردازشی- Ram حافظه و...) کمترین میزان را برای بهترین نتیجه انتخاب می کنند. یعنی مثلا در آنها از انجام حلقه های بی مورد جلوگیری شده است که سرعت پردازش کد را بالا می برد یا میزان متغیرهای لازم برای اسکریپت را به حداقل رسانده که این حافظه رم مصرفی بازی را کاهش می دهد.
❗ عدم رعایت این موارد باعث می شود، بازی ساخته شده بدون دلیل با بهترین قابلیت(مد نظر) کار نکند و نتیجه مناسب از ساخت بازی توسط شما حاصل نمی شود.
#اسکریپت_نویسی #نکته #برنامه #یونیتی
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕ اسکریپت آماده حرکت یک آبجکت به سمت محل لمس شده
#درخواست
🔹 دستورات مربوط به بررسی Touch در #کلاس Input را قبلاً مورد بررسی قرار دادیم، اکنون قصد داریم اسکریپت آماده ای برای آن قرار دهیم. البته این اسکریپت درخواست برخی کاربران نیز بوده است.
🔸 اسکریپتی که در پست بعدی برای #دانلود قرار می گیرید، برای حرکت یک آبجکت در محیط «دو بعدی» به سمت محل لمس شده در بازی است، این اسکریپت همچنین سرعت حرکت آبجکت را نیز از ورودی دریافت می کند. برای بدست آوردن موقعیت لمس در این اسکریپت از پارامــــتر deltaPosition مربوط به Input.GetTouch استفاده شده است. حرکت آبجکت به سمت نقطه XY است که کاربر روی آن کلیک کرده (لمس کرده) است. (دقت کنید حرکت سه بعد داشته و موقعیت محل لمس در صفحه گوشی دو بعد- بنابراین برای این تبدیل به این صورت عمل شده است)
👈 اسکریپت آماده در پست بعدی قابل دانلود است.
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
#درخواست
🔹 دستورات مربوط به بررسی Touch در #کلاس Input را قبلاً مورد بررسی قرار دادیم، اکنون قصد داریم اسکریپت آماده ای برای آن قرار دهیم. البته این اسکریپت درخواست برخی کاربران نیز بوده است.
🔸 اسکریپتی که در پست بعدی برای #دانلود قرار می گیرید، برای حرکت یک آبجکت در محیط «دو بعدی» به سمت محل لمس شده در بازی است، این اسکریپت همچنین سرعت حرکت آبجکت را نیز از ورودی دریافت می کند. برای بدست آوردن موقعیت لمس در این اسکریپت از پارامــــتر deltaPosition مربوط به Input.GetTouch استفاده شده است. حرکت آبجکت به سمت نقطه XY است که کاربر روی آن کلیک کرده (لمس کرده) است. (دقت کنید حرکت سه بعد داشته و موقعیت محل لمس در صفحه گوشی دو بعد- بنابراین برای این تبدیل به این صورت عمل شده است)
👈 اسکریپت آماده در پست بعدی قابل دانلود است.
〰〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
GetTouchPos.js
539 B
⭕ اسکریپت آماده برای بررسی محل لمس در گوشی ها
حرکت ساده در محور های XY نسبت به موقعیت لمس شده در صفحه گوشی
@UnityLearning
حرکت ساده در محور های XY نسبت به موقعیت لمس شده در صفحه گوشی
@UnityLearning
⭕ #بردار عمود بر دو بردار
🔹 در ریاضیات تعریف خاصی برای بردار عمود بر دو بردار (قوانین فیزیک در محاسبه جهت میدان مغناطیسی) وجود دارد. این بردار کاربردهای خاصی نیز در طراحی بازی دارد. طبق تعریف در ریاضیات، تنها یک بردار جهت دارد عمود بر دو بردار دیگر می تواند وجود داشته باشد.
🔸 در یونیتی با استفاده از #کلاس Vector3 می توان این بردار را محاسبه کرد. خروجی تابع Cross از این تابع یک بردار دیگر است که بر هر دو بردار ورودی عمود خواهد بود.
👈 #سی_شارپ
Vector3 perp = Vector3.Cross(s1, s2);
👈 #جاوا
var perp:Vector3 = Vector3.Cross(s1, s2);
▫ در اینجا متغیر perp بردار عمود بر دو بردار S1 و S2 خواهد بود.
#اسکریپت_نویسی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
🔹 در ریاضیات تعریف خاصی برای بردار عمود بر دو بردار (قوانین فیزیک در محاسبه جهت میدان مغناطیسی) وجود دارد. این بردار کاربردهای خاصی نیز در طراحی بازی دارد. طبق تعریف در ریاضیات، تنها یک بردار جهت دارد عمود بر دو بردار دیگر می تواند وجود داشته باشد.
🔸 در یونیتی با استفاده از #کلاس Vector3 می توان این بردار را محاسبه کرد. خروجی تابع Cross از این تابع یک بردار دیگر است که بر هر دو بردار ورودی عمود خواهد بود.
👈 #سی_شارپ
Vector3 perp = Vector3.Cross(s1, s2);
👈 #جاوا
var perp:Vector3 = Vector3.Cross(s1, s2);
▫ در اینجا متغیر perp بردار عمود بر دو بردار S1 و S2 خواهد بود.
#اسکریپت_نویسی
〰〰〰〰〰〰〰
⭕ کانال یونیتی لرنینگ⭕
💢 @UnityLearning💢
⭕️جهت بردار عمود بر دو بردار دیگر (بردار Result عمود بر دو بردار a و b)
🔸برای محاسبه این بردار از دستور Vector3.Cross استفاده می شود.
@UnityLearning
🔸برای محاسبه این بردار از دستور Vector3.Cross استفاده می شود.
@UnityLearning