Unity Learning
2.99K subscribers
574 photos
210 videos
1.05K files
280 links
⭕️کانال آموزش حرفـــه ای موتور بازی سازی یـــونیتی

▪️ @UnityLearning ▫️

🔹ارتباط با مدیر کانال/👇

@UnityLearning_Admin

🔹 کد شامد /👇

1-1-3526-61-3-1

💰 تعرفه تبلیغات/👇

@UnityLearning_Ads

لینک گروه تبادل نظر اعضای کانال
@UnityLearning_Group
Download Telegram
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💢
8564xdat.exe
118 MB
آپدیت آفلاین آنتی ویروس مکافی «کلیه نسخه ها»

فایل آپدیت به تاریخ 18-07-2017
29-03-96
⚠️ #مراقب_باشیم اخیرا ایمیل های مخربی در اینترنت پخش شده است. (در ادامه تهدیدات باج افزار جدید)

@UnityLearning
#نظر_سنجی 🗳 آیا از قرار گرفتن آموزش ها به صورت تصویری و متنی در قالب PDF و همچنین فیلم های آموزشی کانال راضی هستید؟
anonymous poll

بله (ادامه پیدا کند) – 67
👍👍👍👍👍👍👍 87%

نظری ندارم – 6
👍 8%

خیر (آموزش متنی بهتر است) – 4
▫️ 5%

👥 77 people voted so far.
آموزش ساخت آبجکت در مایا.pdf
886.4 KB
⭕️دو آموزش در یک فایل

1⃣ آموزش ساخت متن های 3 بعدی برای استفاده در یونیتی

2⃣ آموزش گرفتن خروجی از آبجکت ها در مایا برای استفاده در یونیتی

@UnityLearning
⭕️معرفی برخی توابع مربوط به چرخه حیات (LifeCycle) بازی - قسمت اول

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

🔹در این پست بسیار کاربردی در نظر داریم برخی از این توابع که هر کدام در محلی از این چرخه زمانی یا طول عمر بازی اجرا می شوند را نام ببریم و توضیح دهیم. بیان مثال و اسکریپت های آماده را به پست های بعدی موکول می کنیم.

توابع، هر کدام در زمان خاصــی اجرا می شوند و مهم هم همین زمان اجرا شدن آن هاست که بتوان از آن ها استفاده کرد. برخی توابع ممکن است در نسخه ها پایین تر یونیتی کار کنند.

🔹تابــع Update

👈این تابع در هر فریم از زمان یک بار اجرا می شود. فریم زمانی در هر سیستم با هر شرایطی ممکن است متفاوت باشد.

🔸تابــع FixedUpdate

👈این تابع که در نسخه های جدید یونیتی ارائه شده است از تابع Update بسیار قدرتمند تر است و در هر فریم از زمان چندبار اجرا می شود، بنابراین می توان امیدوارانه گفــت تابع FixedUpdate نسبت به تابع Update در بازی بیشتر اجرا می شود. توصیه یونیتی انجام اعمال محاسباتی بسیار دقیق در این تابع است.

🔹تابــع LateUpdate

👈دقیقا بعد از اجرای یک بار تابع Update تابع LateUpdate اجرا می شود. (اجرا در هر فریم از زمان یک بار، دقیقا مثل Update و دقیقا هر بار بعد از آن)

____________

🔸تابــع Awake

👈در اولین فریم از زمان شروع(برای آبحکت مورد نظر- دقت کنید ممکن است یک شی در بازی مثلا در زمان X بوجود بیاید این تابع در اولین فریم وجود آن آبجکت برای آن اجرا می شود)

🔹تابــع OnEnable

👈در اولین فریم از زمانی که یک آبجکت Enable یا فعال می شود. (این تابع در اولین اجرای بازی برای همه آبجکتها اجرا می شود و در صورتی که یک آبجکت غیر فعال شده باشد و مجدد فعال شود این تابع مجددا اجرا می شود)

🔸تابــع OnLevelWasLoaded

👈همانطور که از نام این تابع معلوم است این تابع زمانی اجرا می شود که مرحله مورد نظر Load شود یعنی اگر این تابع را در Scene مورد نظر بنویسیم این تابع زمانی اجرا می شود که این Scene لود شود(مرحله تعویض شود)

____________

🔹تابــع OnDestroy

👈این تابع زمانی که یک آبجکت Destroy شود برایش اجرا می شود، یعنی اگر این کد را به یک آبجکت بدهیم زمانی که این آبجکت Destroy می شود (در همان فریم زمانی که دستور Destroy برایش اجرا می شود) این تابع اجرا خواهد شد.

🔹تابــع OnDisable

👈حالت مخالف تابع OnEnable ، در زمانی اجــرا خواهد شد که آبجکت مورد نظر توسط سایر کد ها disabled یا inactive (غیر فعـــال) گردد.

🔸تابع OnApplicationQuit

👈زمانی اجرا می شود که دستور Application.Quit() برای بسته شدن کامل بازی یا به هر دلیل مثل زدن Alt+F4 بازی بسته شود این تابع اجرا خواهد شد، به طور مثال می توان حاوی پیام خداحافظ یا عملیات ذخیره فایلهای لازم باشد.

💬به علت طولانی نشدن متن، سایر توابع مثل OnTriigerXXX یا OnMouseXXX را در پست های بعدی و در قسمت دوم این آموزش قرار خواهیم داد. همچنین نمودار چرخه حیات کامل بازی که در آن زمانِ اجرا توابع به صورت فلوچارت رسم شده است را نیز قرار خواهیم داد.


#ادامه_دارد

لینک قسمت دوم/👇

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

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





⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
Media is too big
VIEW IN TELEGRAM
⭕️ #دانلود #فیلم آموزشی یونیتی در مورد توابع رویداد (که در پست قبل توضیح داده شد)

♻️کیفیت: عالی
📍منبع: سایت یونیتی
📌دانلود شده: youtube


Unity3D Scripting: Event Functions

@UnityLearning
Media is too big
VIEW IN TELEGRAM
⭕️ #دانلود #فیلم آموزشی مربوط به توابع آماده یونیتی نسخه 5.6 و 2017

♻️کیفیت: عالی
📍منبع: youtube

ℹ️ توضیحات/👇

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

@UnityLearning
ادامه توابع یونیتی.pdf
242.2 KB
⭕️ #دانلود فایل PDF مربوط به ادامه آموزش کامل توابع یونیتی

🔸معرفی توابع یونیتی- قسمت دوم

🔹لینک قسمت اول/👇

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

@UnityLearning
UnitySetup_Android_Support_for_Editor_2017.1.0b10.exe
114.8 MB
⭕️ #دانلود فایل ماژول پلتفرم اندروید برای یونیتی 2017 نسخه ویندوز 64 بیتی

🔹Android Target Support for unity 2017.1.0b10

Unity Editor (win 64 bit)

@UnityLearning
⭕️ #دانلود نسخه 5.6.2f #یونیتی

◀️ برای دانلود آخرین نسخه ارائه شده از یونیتی (نسخه اصلی) که نسخه 5.6.2 می باشد و در هفته گذشته میلادی ارائه شده است، می توانید از دکمه های پایین این مطلب استفاده کنید.

⚜️یونیتی لرنینگ همواره آخرین نسخه های یونیتی را برای تان قرار خواهد داد. هم نسخه های اصلی و تست شده و هم نسخه بتا

🔹لینک ها مستقیم هستند و بعد از کلیک روی دکمه دانلود آغاز خواهد شد.

🔰انتخاب کنید🔰
آموزش تايپ فارسي در مايا.mkv
109.6 MB
⭕️ #آموزش تایپ فارسی در مایا و ساخت آبجکت در آن و انتقال آن به پروژه یونیتی با روش جدید «غیر از آنچه قبلا در کانال بیان کردیم»

⌛️طول فیلم:5:15
🎥فرمت:MKV

@UnityLearning
🌹عید رمضان آمد و ماه رمضان رفت / صد شکر که این آمد و صد حیف که آن رفت ...

🌺فرا رسیدن عید سعید فطر بر تمام مسلمین جهان مبارک باد.

💐🌷🌹🌼🌸🌺💥


@UnityLearning