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
jdk_8u131_linux_x64_rpmAuthParam
162.1 MB
⭕️ #دانلود JDK فایل های کتابخانه ای جاوا برای ساخت بازی #اندروید در #یونیتی

💯شماره نسخه: 8.131
♻️سیستم عامل: لینوکس 64 بیتی

🔹Java Development Kit Linux 64bit


@UnityLearning
jdk_8u131_macosx_x64.dmg
226.6 MB
⭕️ #دانلود JDK فایل های کتابخانه ای جاوا برای ساخت بازی #اندروید در #یونیتی

💯شماره نسخه: 8.131
♻️سیستم عامل: مک

🔹Java Development Kit Mac


@UnityLearning
دسترسی مستقیم به کل مطالب مربوط به ساخت بازی اندروید تا کنون در کانال

🔰به منظور سهولت کاربران در دسترسی به مطالب مربوط به تولید بازی در پلتفرم اندروید در یونیتی، این پست را قرار می دهیم و سعی می‌کنیم کمی توضیحات را کامل کنیم.

🔸دقت کنید برای کار با اندروید(در هر نرم افراری) نیاز به Android SDK که کتابخانه برنامه نویسی اندروید می‌باشد، دارید.

🔹در کنار این فایل به علت این سیستم عامل اندروید با جاوا نوشته شده است، نیاز به نصب JDK نیز دارید. jdk هم کتابخانه های برنامه نویسی جاوا می‌باشد.

🔰 برای دسترسی سریع انتخاب کنید🔰
⭕️ بررسی پلتفرم خروجی بازی در #کد_نویسی

💡اگر بازی که می سازیم از جمله بازی هایی باشد که در پلتفرم های مختلف ارائه می‌شود، باید بتوانیم در کد نویسی نوع پلتفرم را بررسی کنیم و بر اساس آن تصمیم بگیریم.

🖲به طور #مثال فرض کنید، بازی که هم در نسخه ویندوز و هم موبایل (مثلا اندروید) ارائه می‌شود باید برای نسخه موبایل کنسول حرکتی خاص با لمس صفحه داشته باشد در حالی که این اتفاق در ویندوز باید با کیبورد یا ماوس انجام شود.

🕹برای بررسی پلتفرم در کد نویسی از #کلاس Application استفاده می‌کنیم، این کلاس پارامتری به نام platform دارد که نوع آن(خروجی آن) از نوع RuntimePlatform می‌باشد. به کمک این دستورات می توانیم پلتفرم خروجی بازی را بررسی کنیم. به مثال زیر توجه کنید/👇

if ( Application.platform== RuntimePlatform.WindowsPlayer)
{.....

👈این شرط زمانی درست است که پلتفرم خروجی روی حالت ویندوز تنظیم شده باشد.

⭕️برای سایر پلتفرم ها مثل اندروید و... از دستور RuntimePlatform ، می‌توانید تصویر پست بعدی را مشاهده کنید/👇

▶️ https://t.me/UnityLearning/573

👈این تصویر کلیه پارامتر های دستور را نشان میدهد یعنی شما برای پلتفرم خاص خود باید چه چیزی در دستور شرطی به جای Windows بنویسید.

#ادامه_دارد




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️پارامتر های مختلف دستور RuntimePlatform

📍اطلاعات بیشتر/👇

▶️ https://t.me/UnityLearning/572

@UnityLearning
⚫️فرا رسیدن ایام شهادت مظلومانه حضرت علی بزرگ پیشوای شیعیان را تسلیت عرض می‌کنیم.

⚪️ در این شب‌های قدر التماس دعای فراوان داریم.

🔹لیله القدر خیر من الف شهر
🔸شب قدر فضیلتش از هزار ماه بیشتر است.
⭕️ #کلاس Input

🔰 دستورات و قواعد کلاس Input را در پست های قبلی بررسی کردیم. به طور خلاصه این کلاس برای بررسی انجام یک عمل از دستگاه های ورودی به کار می رود.

ℹ️برای مطالعه بیشتر مطالب زیر را مطالعه کنید.👇

▶️ https://t.me/UnityLearning/171

▶️ https://t.me/UnityLearning/149

▶️ https://t.me/UnityLearning/276

▶️ https://t.me/UnityLearning/285

▶️ https://t.me/UnityLearning/304



👈در اینجا سایر دستورات این کلاس کاربردی را مورد بررسی قرار می‌دهیم.

🔸دستور anyKey

اگر هر کلیدی از ماوس یا صفحه کلید زده شود این دستور true را بر می‌گرداند.

Input.anyKey

🔹دستور mousePosition

محاسبه مختصات ماوس در روی صفحه، خروجی دو بعدی(زمانی که ماوس قابل نمایش است)

🔸دستور touchSupported

این دستور مشخص می‌کند آیا دستگاهی که بازی روی آن اجرا می‌شود قابلیت لمس دارد یا خیر؟
(اگر دستگاه نهایی قابلیت تاچ یا لمس دارد خروجی این دستور true خواهد بود)

🔜در یک فایل PDF به زودی متد ها و توابع کلاس Input را توضیح می‌دهیم.

🔹دانلود فایل/👇
▶️ https://t.me/UnityLearning/576


#ادامه_دارد


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
Input.pdf
439.7 KB
⭕️ #دانلود فایل PDF آموزش کامل توابع کلاس Input

👌به همراه قطعه کدهای استاندارد کامل این توابع

@UnityLearning
🌸بسم الله الرحمن الرحیم

🌷إِنَّا أَنْزَلْنَاهُ فِي لَيْلَةِ الْقَدْرِ 1⃣

🌹ما قرآن را در شب قدر نازل کردیم


🌷وَمَا أَدْرَاكَ مَا لَيْلَةُ الْقَدْرِ 2⃣

🌹و تو چه دانى كه شب قدر چيست؟

🌷لَيْلَةُ الْقَدْرِ خَيْرٌ مِنْ أَلْفِ شَهْرٍ 3⃣

🌹 شب قدر بهتر از هزار ماه است.


🌷تَنَزَّلُ الْمَلَائِكَةُ وَالرُّوحُ فِيهَا بِإِذْنِ رَبِّهِمْ مِنْ كُلِّ أَمْرٍ4⃣

🌹 در آن شب فرشتگان و روح به فرمان پروردگارشان براى انجام دادن كارها نازل مى‌شوند.


🌷سَلَامٌ هِيَ حَتَّى مَطْلَعِ الْفَجْرِ 5⃣

🌹 آن شب تا طلوع بامداد همه سلام و درود است.


🍀منبع متن: نرم افزار قرآن مبین

🙏التماس دعا

◼️◼️◼️◼️◼️◼️◼️◼️

گرامی داشت شب‌های قدر

⚫️@UnityLearning⚫️
نکات برنامه نویسی تابـــع Destroy

تابع Destroy برای حذف کردن Asset ها به کار می رود(در زمان اجرای بازی Run-time) از این تابع میتوان برای حذف کلیه آبجکت هایی که می شناسیم و... استفاده کرد. در این پست حالت هایی از این دستور را قـــرار می دهیم.

🔘 حالت کلی دستور به شکل زیر است./👇

Destroy(obj, t);

*پارامتــر اختیاری t از نوع Float بوده و مربوط به زمان است. برای مقدار دهی این پارامتر به صورت اعشاری باید حرف F را در آحر عدد قرار دهید. مثلا اگر می خواهید مقدار 5.5 را به پارامتر بدهید باید بنویسید 5.5F

حالت های مختلف دستور Destroy را در اینجا بررسی می کنیم./⬇️

🔸 حذف GameObject که کد به آن متصل شده است./👇

Destroy (gameObject);

🔹 حذف کامپوننت Script جاری از گیم آبجکتی که کد به آن متصل شده است (حذف اسکریپت جاری از گیم آبجکت)

Destroy (this);

🔸 حذف کامپوننت خاص (#مثال Rigidbody) از آبجکت (که کد به آن متصل شده است)/👇

Destroy (rigidbody);

*به جای rigidbody می توان نام هر کامپوننتی را قرار داد.

🔹 حذف گیم آبجکت(یا هر Asset دیگری که در پارامتر اول داده می شود) بعد گذشت 5 ثانیه./👇

Destroy (gameObject, 5);

🔸 حذف اسکریپتی به نام FooScript از گیم #آبجکت (نام این اسکریپت FooScript بوده است که به آبجکت داده شده است)/👇

Destroy (GetComponent (FooScript));

*مورد آخر مربوط به زمانی است که چند اسکریپت به یک آبجکت داده شده است و ما در نظر داریم یکی از آن ها را حذف کنیم. به این شکل با دادن نام اسکریپت به تابع GetComponent می توانیم آن را بدست آورده و توســـط تابع Destroy آن را حذف کنـــیم.


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



کانال یونیتی لرنینگ
💢 @UnityLearning💢
npp.7.3.3.bin.x64.zip
2.9 MB
⭕️ #دانلود نسخه اصلی Notepad ++

📌نسخه 64 بیت ویندوز

📜نرم افزار ویرایش متون تخصصی

✏️مناسب برای کد نویسی جاوا در یونیتی

📎آخرین نسخه دانلود شده از سایت سازنده

@UnityLearning
npp.7.3.3.bin.zip
3 MB
⭕️ #دانلود نسخه اصلی Notepad ++

📌نسخه 32 بیت ویندوز

📜نرم افزار ویرایش متون تخصصی

✏️مناسب برای کد نویسی جاوا در یونیتی

📎آخرین نسخه دانلود شده از سایت سازنده

@UnityLearning
JavaScript_Tutorial_fju9ii8YsGs_22.mp4
288.8 MB
⭕️ #فیلم آموزش مقدماتی جاوا اسکریپت

📍منبع: youtube
زمان: 97 دقیقه
💡کیفیت: خوب


@UnityLearning
نکاتی در مورد ایجاد بازی مرحله ای در بازی

در پست زیر مطالبی درباره اجرای مرحله ای بازی و در واقع کد نویسی که باعث لود شدن مرحله خاصی از بازی می شد را به صورت فیلم آموزشی به صورت کامل بیان کردیم/
👇

https://telegram.me/UnityLearning/379

🎥 در این فیلم بیان کردیم برای لود کردن مرحله جدید در یونیتی از دستور LoadLevel مربوط به کلاس Application استفاده می کنیم، که یک پارامتر ورودی دارد، که اگر متنی باشد یعنی کلاس Application مرحله (Scene) که نام آن داده شده است(همان رشته که به صورت پارامتر به تابع دادیم) را در این لحظه باز کند، یا اینکه اگر این پارامتر عددی باشد یعنی مرحله شماره «عدد وارد شده» را باز کن(همه این مطالب در فیلم آموزشی قابل مشاهده است)

🔸 در اینجا و در #ادامه مطلب کدی را می گوییم که باعـــث رفتن به مرحله بعد(از نظر ترتیب مراحـــل) می شود.

در واقع می خواهیم دستور loadedLevel از #کلاس Application را بیان کنیم. این دستور شماره مرحله لود شده بازی را بر می گرداند. همانطور قبلا گفتیم این شماره برای هر مرحله منحصر به فرد بوده و از پنجره Build Setting قابل دسترسی، مشاهده و تغییر است.

بهترین مثال از این دستور این است که می خواهیم کد جامعی برای بازی خود بنویسیم و کاری کنیم بازیکن در هر مرحله ای بود، به مرحله بعد برود/👇

Application.LoadLevel(Application.loadedLevel+1);

دقــت کنید اگر این کد به مرحله آخر برسد و یا بازی شما تک مرحله باشد باتوجه به اینکه دیگر مرحله ای بعد از مرحله جاری وجود ندارد، با خطا مواجه می شوید. برای جلوگیری از این خطا قبل از این دستور با یک شرط if بررسی کنید، مثلا اگر بازی شما 10 مرحله دارد بررسی کنید آیا Application.loadedLevel==9 هست یا خیر؟ (توجه کنید در یونیتی شماره مرحله ها از صفر شروع می شود)

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




کانال یونیتی لرنینگ
💢 @UnityLearning💢
#آموزش قرار دادن آبجکتی رو به یک آبجکت دیگر در حالت Run-time و با کد نویسی

🔹 برای اینکه بتوانیــم یک آبجکــت را رو به یک آبجکت دیگر قرار دهیم از تابع LookAt استفاده می کنیم. در واقع این تابع آبجکت مورد نظر را (که از نوع transform اســت) به سمت آبجکتی که در پارامتر ورودی اش است (از نظر جهت قرار گیری-روبرو) قــرار می دهد.

شکل کلی دستور /👇

Obj1.LookAt(Obj2);

👈 این دســتور Obj1 را (که تاکید می گردد از نوع Transform است) به سمت Obj2 قرار می دهد.

🔹 اگر بخواهیم مثلا آبجکت جاری(که کد به آن متصل شــده است) به سمت آبجکت دیگری بچرخد، از دستور زیر استفاده می کنیم./👇

transform.LookAt(Obj);

👈 فرض کنید Obj از نوع Transform بوده و قبلاً تعریف شده است.

نکته مهــم: لطفا توجه کنید دستور LookAt عمل قرار دادن آبجکت در جهت را در یک لحظه انجام می دهد و عمل چرخشی که قابل دیدن باشد انجام نمی شود، بنابراین استفاده از دستور به تنهایی برای چرخش هــوش مصنوعی به سمت دشمن مناسب نیست، این کار را در کدهای هوش مصنوعی که در کانال قرار داده ایم انجام داده ایم.

نکته مهم دوم: توجه کنید اسکریپت کد CharacterController نسبت به دستور LookAt اولیت دارد، این به این معناست که اگر از LookAt برای چرخش کاراکتر به سمت یک آبجکت دیگر به عنوان هدف استفاده کنیم، نتیجه کار را مشاهده نخواهیم کرد و این به علت این است که کنترل کاراکتر در حال حاضر در اختیار ماست و اولیت نیز با این حرکت است تا آنچه دستور LookAt به آن اشاره می کند. برای این که بتوانید کاری کنید کاراکتر شما به سمت یک هدف قرار گیرد، باید کامپوننت CharacterController آن را غیر فعال کنید.

🔸 در این صورت اگر کدی (مثل کدی که در پست بعدی قرار می دهیم) به FPS خود بدهید خواهید دید برای همیشه به سمت آبجکت مورد نظر شما قرار می گیرد. (بهتر است بگوییم حالت Forward آبجکت به سمت آبجکت دیگر می شود-دقیقا روبروی آبجکت)

در پست بعدی اسکریپت ساده و آماده ای برای آشنایی شما با دستور قرار داده می شود، این اسکریپت آبجکت جاری را به سمت آبجکت دیگری که باید در یونیتی مقدار دهی شود قرار می دهد. برای استفاده از کد آن را به طور مثال به یک آبجکت دوربین بدهید(یا هر آبجکت دیگری مثل FPS) و هدف آن را روی یک آبجکت متحرک تنظیم کنید، خواهید دید آبجکت اولی (مثلا دوربین) همیشه به سمت #آبجکت متحرک خواهد بود. (بسیار مناسب برای ساخت دوربین های تعقیب کننده از نظر دیداری)

🔗لینک کد👇

▶️ https://t.me/UnityLearning/586


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




کانال یونیتی لرنینگ
💢 @UnityLearning💢
LookAt.js
175 B
⭕️ اسکریپت آماده، قرار گرفتن آبجکتی که کد به آن متصل می‌شود به سمت آبجکت دیگر که در یونیتی مقدار دهی می‌شود.

🔸توضیحات👇

▶️ https://t.me/UnityLearning/585

@UnityLearning
Notepad++.pdf
280 KB
⭕️ #آموزش هماهنگ کردن Notepad ++ با یونیتی برای باز کردن اسکریپت ها

🔹این آموزش برای اولین در ایران در کانال یونیتی لرنینگ قرار میگیرد.

@UnityLearning
🌹دعای سلامتی امام زمان 🌹


🍃در این شب پر فیض قدر که از هزار ماه بهتر است، التماس دعا داریم.

@UnityLearning
⭕️اجرای واقعی بازی در بازه زمانی (دستور deltaTime از کلاس Time)

🔸همانطور که قبلا بیان کردیم تابع Update در هر فریم از زمانِ اجرای پرازنده اجرا می شود، این بدین معنی است که مثلا اگر یک CPU بتواند تابع Update را در هر ثانیه 10 بار اجرا کند، ممکن است یک CPU دیگر بتواند دستورات را در هر ثانیه 5 بار اجرا کند. در این جا اگر ما دستوری داشته باشیم که بخواهیم در هر کامپیوتری با هر سخت افزاری به یک شکل اجرا شود، باید دستورات را بر طبق زمان انجام دهیم. یعنی کاری کنیم دستور در همه سیستم ها به یک اندازه اجرا شوند. مثلا در همه کامپیوتر ها این دستور در هر ثانیه 10 بار اجرا شود.

🔹برای این کار از دستور deltaTime که قبلا آن را اسکریپت های آماده ما نیز دیده اید، استفاده می کنیم. زمانی که مقدار یک پارامتر (مثلا پارمتر چرخش یا حرکت یک آبجکت) در این دستور ضرب شود، باعـــث می شود ما به آنچه می خواهیم برسیم و کاری کنیم این دستور (که در آن از deltaTime استفاده کردیم) در یک بازه زمانی خاص اجرا شود. شما حتما قبلا در اسکریپت های آماده یونیتی لرنینگ و در if ها این دستور را مشاهده کرده اید.

▫️در واقع محل دیگر استفاده از دستور، استفاده از آن در دستور شرطی if است.

ℹ️حالت کلی دستور که از #کلاس Time است به شکل زیر است./👇

Time.deltaTime

👈که مقدار خروجی آن زمان بازی بر اساس ثانیه است.

🔘برای #مثال اگر بخواهیم یک #آبجکت (که کد به آن متصل شده است) به یک شکل در صحنه (Scene) بازی شروع به حرکت کند و سرعت یکسان در همه سخت افزار ها داشته باشد، به این شکل از دستور استفاده می کنیم./👇

var translation : float = Time.deltaTime * 10;

transform.Translate (0, 0, translation);

👈این دستور #آبجکت را با دقتِ در هر ثانیه10 متر در محور Z حرکت می دهد.

❗️دقت کنید از این دستور در تابع Update استفاده می کنیم، بنابراین همانطور که می خواهیم حرکت روان خواهد بود (و نـــه به شکل ثانیه به ثانیه-پرش)

✖️در واقع ما با این ضرب که در مقدار جابجایی انجام شد(متغیر translation) کاری می کنیم حرکت در هر ثانیه نهایتا به مقدار تعیین شده ما انجام شود و از آن تجاوز نکند.

دقیقاً در دستورات دیگر به این شکل مثل چرخش (Rotate) این عمل به همین شکل انجام خواهد شد.



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

⭕️در مورد کلاس Time در پست های زیر مطالب اصلی قرار گرفته است/👇

▶️ https://t.me/UnityLearning/225

▶️ https://t.me/UnityLearning/226

▶️ https://t.me/UnityLearning/412

▶️ https://t.me/UnityLearning/413

⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
com.adobe.reader.apk
19.5 MB
⭕️ #دانلود آخرین نسخه ارائه شده از Adobe Reader برای اندروید

نسخه اصلی

👈با توجه به استقبال کاربران از قرار دادن برخی آموزش ها در قالب PDF (آموزش تصویری همراه متن)

@UnityLearning
⭕️ #کلاس Quaternion انجام اعمال مربوط به چــرخش

🔘در یونیتی اعمالی مثل چرخش، حرکت و کلیه کارها بر اساس بردارها(Vector) انجام می شوند. در این پست در نظر داریم کمی با موضوع چرخش کارکنیم.

🔄در پست های قبل دستور چرخش یک آبجکت از نوع Transform را توضیح دادیم. یادآوری/👇

transform.Rotate(Vector3(X,Y,Z);

👈که این دستور آبجکتی که کد به آن متصل شده بود را در جهت های داده شده XYZ می چرخاند. دقت کنید پارامــتر ورودی دستور Rotate از نوع برداری یا Vector است، در واقـــع این دستور آبجکتی را در جهت بردار داده شده می چرخاند.

↙️برای متوجه شدن مطالب در بردارهای سه بعدی می توانید در اینترنت جستجو کنید و مطالب ریاضی مربوط به بــردارها ســه بعدی را مطالعه کنید.

🔁برای کار با مسائل مربوط به چرخش مثل محاسبه بردارها، چرخش نرم و... از #کلاس Quaternion استفاده می شود.

🔸محاسبه بردار چرخش از آبجکت A به سمت آبجکت B برای آبجکت C

(این تنها یک توضیح خلاصه است در پست های آتی به طور کامل دستورات کلاس بسیار کاربردی Quaternion را بیان خواهیم کرد)

🔹دستور Slerp از این کلاس برای چرخش نرم یک آبجکت (از یک جهت به جهت دیگر) است. این دستور برای چرخش نرم از دستورات کلاس Time مثل deltaTime استفاده می کند. حالت کلی این دستور به شکل زیر است./👇

C.rotation = Quaternion.Slerp (A.rotation, B.rotation, Time.time * speed);

👈اگر ABC هر کدام آبجکت های ذکر شده باشند، این دستور این عمل را انجام میدهد. محاسبه بردار جهت از جهت روبرو A به سمت B و برگرداندن میزان چرخش به صورت نرم (بر اساس پارامتر آخر _ Speed) اعمالی است که دستور انجام می دهد.

❗️تاکید می گردد کلیه کدهای آماده این کلاس به همراه آموزش ها در کانال قرار خواهد گرفت.

#ادامه_دارد

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





⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢