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
⭕️ معرفی چند پارامتر مهم در #کامپوننت Rigidbody
(در پست بعدی)

👈 همانطور که بیان کرده بودیم این کامپوننت برای اضافه کردن رفتار های فیزیک (اجرای قوانین فیزیک) استفاده می‌شود.

@UnityLearning
⭕️ معرفی برخی از پارامتر های مهم و کابردی #کامپوننت Rigidbody

🦋 گزینه Mass وزن آبجکت بر حسب کیلو گرم(به طور پیشفرض) می باشد.

💨 گزینه Drag میزان نیروی است که به این آبجکت در هنگام باد وارد شود. اگر این مقدار صفر باشد باد و سایر نیروهای مشابه بر آن تاثیر نخواهند داشت.

🌪 گزینه Angular Drag بیان می‌کند باد های چرخشی مثل گردباد اگر روی آبجکت تاثیر بگذارند، چقدر آبجکت میچرخد؟

🌍 گزینه Use Gravity تعیین می‌کند، آیا جاذبه روی آبجکت تاثیر داشته باشد یا خیر؟

❄️ گزینه انتخابیِ Constraints مشخص میکند، این جسم به هر دلیل قابلیت چرخش یا حرکت را دارد؟ اگر گزینه freeze position فعال می‌شود، پارامتر های xyz این آبجکت غیر قابل جابجایی و تغییر خواهند بود و همچنین برای rotation

👈همانطور که بیان کردیم دو نوع نیرو ممکن است به آبجکت بر خورد کند (در بخش Drag)

نیروی مستقیم که توسط دستور AddForce در برنامه نویسی شبیه سازی می‌شود و نیروی چرخشی که توسط دستور AddTorque شبیه سازی می‌شود (البته دستورات اجرای باد به صورت طبیعی و بدون کد نویسی در یونیتی موجود است)

🔜 این دستورات استفاده های زیادی دارند که در پست های آینده به بهترین نحو توضیح داده خواهند شد.




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
🌔ماه گرفتگی

📆 امروز دوشنبه « 16 مرداد 95» در ساعت 9 شب ماه می‌گیرد.

🕋 نماز آیات در زمان ماه گرفتگی واجب است.

🌘 اوج گرفتگی در 21:59:01 رخ میدهد.

@UnityLearning
🛡 کانال «مکافی آپدیت»

💊جدیدترین نسخه ها، آپدیت ها و اخبار مربوط با آنتی ویروس مکافی را در کانال مکافی آپدیت دنبال کنید.

📆 #آپدیت_آفلاین_روزانه

@McAfeeUpdate
تغییر بازی بین حالت دو بعدی و سه بعدی

🔰 در صورتی که از ابتدا حالت بازی خود را اشتباه انتخاب کرده اید می توانید از این طریق بازی خود را از حالت 2D به 3D و برعکــس تبدیل کنید.

🔸 به منوی زیر رفته و پنجره Editor را باز کنید و در نهایت با انتخاب گزینه Default Behavior Mode می توانید نوع حالت بازی خود را تغییر دهید.

Edit>Project Settings>Editor

🔹 دقت کنید تنظیمات در پنجره Inspector باز می شود و گزینه مذکور در این پنجره موجود است.




کانال یونیتی لرنینگ
💢 @UnityLearning💢
⭕️تصاویر زنده از ماه گرفتگی هم اکنون

👈با کلیک روی بخش پایین این پیام این ماه گرفتگی رو زنده تماشا کنید.

(دقت کنید فیـلتر شکن استفاده کنید)

🌔پیام رو برای دوستان هم فوروارد کنید.

زمان شروع رویت گرفتگی در ایران

2⃣1⃣ : 5⃣3⃣ :0⃣1⃣

@UnityLearning

🔴 تصاویر زنده از کوالالامپور مالزی برای نمایش روی تصویر پایین این پست کلیک کنید.

https://youtu.be/gzhF04A9tmY
🌔هم اکنون ماه گرفتگی

🖥 زنده از تهران

🕋 با وقوع ماه گرفتگی نماز آیات واجب می شود و زمان خواندن آن در زمان وقوع ماه گرفتگی یعنی هم اکنون است.

@UnityLearning
ArmyPilot_UnityLearning.zip
15.1 MB
⭕️ #دانلود #آبجکت بسیار کاربردی سرباز

📍به همراه انیمیشن ها به طور کامل

♻️فرمت های در دسترس Obj fbx و...

👈 مناسب برای ساخت دشمن(هوش مصنوعی)

آبجکت #انیمیشن

@UnityLearning
📸 #دانلود #آبجکت این سرباز (تصویر بالا👆)

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

🔶به صورت انیمیشن دار در فرمت های کاربردی obj و fbx

@UnityLearning
Soldier_UnityLearning.7z
3.7 MB
⭕️ #دانلود آبجکت سرباز به همراه #تکسچر ها

🔸این سرباز ها مربوط به بازی معروف Counter Terrorist می‌باشند.

@UnityLearning
⭕️ توضیحاتی در مورد پکیج Control Freak 2

👈این #پکیج برای انجام دستورات مربوط به کنترل در پلتفرم های مختلف ساخته شده است. (در اکثر مواقع 99% درصد نیاز به کد نویسی نیست)

🔹با استفاده از این پکیج می توان کنترلر های مناسبی برای بازی های موبایل ساخت. به طور مثال کنترلر در بازی های اتومبیل سواری شامل پدال ها و کنترل حرکتی در صفحه بازی می‌باشد.

(این کنترل ها در بازی سازی به On-screen controls معروف هستند و شامل Joystick, Button , Steering wheel و... می‌باشد که در صفحه بازی نمایش داده می‌شود و در واقع عملی را انجام می‌دهند که خود آن دستگاه بازی فیزیکی در واقعیت انجام می‌دهد، در واقع دستگاه برای بازی شبیه سازی می‌شود)

🔸یکی از ویژگی های مهم و چالش برانگیز این پکیج قابلیت تبدیل خودکار اسکریپت آن Script Converter  است. که به کمک آن شما می‌توانید اسکریپت های خود را بر اساس دستگاه شبیه سازی شده تغییر دهید.

👈 #ادامه_دارد

🌐 تصاویری از کنترل های روی صفحه ای که این پکیج برای بازی فراهم می‌کند به همراه فیلم آموزشی از یوتیوب و همچنین آموزش استفاده در پست های بعدی قرار خواهد گرفت.

💰این پکیج در سایت یونیتی استور با قیمت 10$ به فروش می‌رسد. به زودی این پکیج را برای دانلود در کانال قرار خواهیم داد. حجم پکیج حدود 10 مگابایت است.



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ #پکیج معرفی شده Control Freak 2  این گونه کنترلر ها را به صفحه بازی اضافه خواهد کرد.

👈دانلود پکیج به زودی از کانال امکان پذیر خواهد بود.

@UnityLearning
⭕️ ضرب عدد در بردار

👈 در صورتی که یک بردار سه بعدی (Vector3) یا دو بعدی ( Vector2) در یک عدد ضرب شود، این ضرب از نوع "داخلی" خواهد بود. یعنی تمام پارامتر ها در عدد وارد شده ضرب می‌شود و بردار تغییر می‌کند.

Vector3 ✖️ integer (float/double)

🔹خروجی چنین دستوراتی برداری می‌باشد. به طور مثال اگر در یک بردار عدد 2 ضرب شود، آن بردار دو برابر می‌شود. یا اگر عدد منفی در آن ضرب شود بردار برعکس می‌شود.

🔸حال اگر این عمل برای کار های حرکتی استفاده شود، مثل وارد کردن نیرو، ضرب عدد در این بردار به همان میزان روی سرعت تاثیر می‌گذارد.




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
وارد شدن نیرو به یک آبجکت (شبیه سازی)

👈 در صورتی که بخواهیم به یک آبجکت در یک جهت خاص نیرو وارد شود، از تابع AddForce در یونیتی استفاده می‌شود. در صورتی که این نیرو اتفاق بیافتد آبجکتی که در کد تابع به آن متصل است و قابلیت حرکت و اجرای قوانین فیزیک را داشته باشند، واکنش نشان می‌دهند و در جهت نیرو وارد شده حرکت خواهد کرد. حالت های مختلفی از تابع AddForce در یونیتی تعریف شده است. اولین پارامتر این تابع جهت وارد کردن نیرو هست که از نوع Vector3 می‌باشد، پارامتر دوم نیز نوع نیرویی است که به آبجکت های دیگر وارد می‌شود. پارامتر دوم اختیاری بوده و در صورتی که ذکر نشود، نیروی با حالت نرمال ایجاد می‌شود.

(توجه کتید این دستور، نیرو تنها به آبجکتی که گفته ایم وارد می کند و سایر آبجکت ها تحت تاثیر نخواهند بود)

تاکید می گردد، این تابع باید از کامپوننت Rigidbody صدا زده شود و و نیرو به آن آبجکتی وارد می شود که این #کامپوننت به آن متصل شده است. به این مثال دقت کنید/👇

transform.GetComponent(Rigidbody).AddForce(Vector3(5,5,5)*100);

این دستور به آبجکتی که اسکریپت به آن متصل شده است، در جهت (5,5,5) با قدرت 100 نیرو وارد می کند. بنابراین حالت کلی این تابع به شکل زیر است/👇

Rigidbody.AddForce(Vector3[,ForceMode]);

چون پارامتر دوم یعنی ForceMode اختیاری است در [] قرار گرفته است، نوع نیرویی که وارد می شود بستگی به وزن آبجکت دارد (پارامــتر Mass که در #کامپوننت Rigidbody توضیح داده شد) حالت نرمال وارد شدن نیرو، نیرو است که با در نظر گرفتن وزن شی به آن وارد شود و دنباله دار هم نباشد به نوع نیرو Impulse می باشد. سایر نوع نیرو ها (ForceMode) به این شرح است، برای معرفی آن ها از کلاس ForceMode استفاده می شود. (مثال در ادامه قرار خواهد گرفت)

🔹 اگر بخواهیم یک نیروی دنباله دار و با توجه به وزن آبجکت به آن وارد شود از Force استفاده می شود. (ForceMode.Force)

🔹 اگر بخواهیم یک نیروی دنباله دار بدون توجه به وزن آبجکت به آن وارد شود از Acceleration استفاده می شود.

🔹 اگر بخواهیم نیرو معمولی (دنباله دار نبودن) بدون در نظر گرفتن وزن آبجکت به آن وارد شود از VelocityChange استفاده می شود.

به طور مثال اگر بخواهیم به یک آبجکت به طور دایم و دنباله دار نیرو در جهت (5,5,5) وارد شود و همچنین وزن آبجکت هم در نیرو وارد شده موثر باشد، از دستور زیر استفاده می شود (❗️دقت کنید 👈 فرض کنید Rigidbody کامپوننتی است که در دستورات قبلی مقدار دهی شده است)

Rigidbody.AddForce(Vector3(5,5,5),ForceMode.Acceleration );

🔹 باید با حالت های مختلف وارد شدن نیرو کار کنید تا نتایج را مشاهده کنید تا بتوانید بهترین نتیجه را بگیرید چون در بیان شاید نتوان خوب مطلب را گفت، باید تجربه شود.

🔸 اکنون می توانید دستورات کامپوننت Rigidbody را که قبلاً توضیح داده ایم را بهتر درک کنید، مثلا در آن بخش گفته بودیم FreezePosition حال اگر این پارامتر را ست کنید خواهید دید دستور Force روی آبجکت شما تاثیر نخواهد داشت.

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

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


کانال یونیتی لرنینگ
💢 @UnityLearning💢
This media is not supported in your browser
VIEW IN TELEGRAM
🎥Creator Series: When Is It Finished?

🎦 قسمت سوم از سری #فیلم های کوتاه Creator Series

«چه زمانی بازی سازی تموم میشه؟»

@UnityLearning
Media is too big
VIEW IN TELEGRAM
🎦 #فیلم عالی برای نحوه استفاده از #پکیج Control Freak 2

🌐کیفیت عالی
⬇️ دانلود از یوتیوب

این پکیج برای اولین بار به صورت رایگان در پست بعدی برای دانلود قرار خواهد گرفت.

@UnityLearning
Control Freak 2 v2.0.1(@UnityLearning).7z
9.9 MB
⭕️ #دانلود #پکیج Control Freek v2 نسخه دوم

👈بهترین ابزار برای قرار دادن کنترلر روی صفحه

💰 قیمت این پکیج 10$ می باشد، که در کانال ما برای اولین بار به صورت رایگان قابل دریافت است.

@UnityLearning
پکیج Control Freak چگونه عمل می کند؟

🔸 این پکیج بر اساس آنچه در Input Setting برای بازی خود تعریف کرده اید، عمل کلیک شدن روی دکمه ها(ماوس، صفحه کلید، دسته بازی، کنسول و...) را با آبجکت های UI دو بعدی برای بازی شبیه سازی می کند.

🔹 به بیان دیگر، این پکیج با استفاده از آبجکت های UI که دارد، کاری می کند زمانی که کاربر روی آن آبجکت ها کلیک کرد عمل متقابل آن اجرا شود. مثلاً شما فرض کنید می خواهید یک Button در بازی تان قرار دهید که این Button زمانی که روی آن کلیک شد، عمل Fire1 را انجام دهد. (( یادآوری: عمل Fire1 مربوط به فشار داده شدن کلیک چپ ماوس بود)) یعنی کاربر زمانی که روی این دکمه (Button کلیک کرد برای بازی طوری شبیه سازی اتفاق بیافتد که انگار دکــمه ماوس فشار داده شده است و تمامی دستوراتی که در زمان اتفاق افتادن این عمل قرار است در بازی تان انجام شود(مثل شلیک شدن تیر) در این زمان اتفاق بیافتد، در واقع شرط زیر در این زمان (با اینکه واقعاً کلیک ماوس فشار داده نشده است) true شود.
/👇

if(Input.GetButton("Fire1")

کلیه دستوراتی که برای این شرط نوشته شده است اجرا می شود (در تمامی اسکریپت ها) - پکیج مذکور کلیه اسکریپت های لازم برای این کار را دارد و نیازی به اسکریپت نویسی مجدد نیست، در واقع تنها لازم است در محیطی کاملاً گرافیکی شما یک Button اضافه کنید و آن را به Fire1 متصل کنید. برای سایر آبجکت های UI این پکیج کار به همین ترتیب است.

🔗 این پکیج یک بخش به نام CF2 Assistant دارد که کار آن شناسایی کلیه ورودی های بازی تان است. در واقع زمانی که شما پنجره مذکور را از منــوی Control Freak 2 باز می کنید و بازی را اجرا می کنید این بخش اقدام به بررسی کلیه ورودی های بازی شما می کند و بخش هایی که می تواند برای شما پیاده سازی کند را در اختیارتان می گذارد. (لطفا برای آموزش کامل فیلم آموزشی که در کانال از یوتیوب گذاشته ایم را مشاهده کنید، این فیلم انگلیسی است اما اقداماتی که انجام می دهد مشخص است)

البته به نظر می رسد برای بهتر عمل کردن این #پکیج باید به اینترنت (همراه با فیلــــتر شکن) متصل بود که البته این موضوع هنوز 100% #تست_نشده است، بنابراین تایید نهایی آن را به همراه آموزش های بیشتر از این پکیج بسیار کاربردی را در پست های بعدی خواهیم گذاشت. و این بخش از این پست حذف خواهد شد.



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

در انتها تاکید می کنیم، این پکیج به طور کامل با دستورات و تنظیمات Input Setting عمل می کند و تنها در صورتی برای بازی شما عمل خواهد کرد که شما بازی خود را بر اساس آن نوشته باشید. قبلا هم گفتیم دو راه برای بررسی ورودی در یونیتی موجود است اولی اینکه دقیقا مشخص کنیم کلیک راست ماوس فشار داده شود و یکی این که به جای آن از دستورات Fire با تابع GetButton و یا GetAxis به جای کلید های جهتی استفاده کنیم.

📝 برخی از توابع کلاس Input در پست زیر توضیح داده شده است./👇

https://t.me/UnityLearning/576

سایر پست های مربوط به این کلاس نیز در پست زیر معرفی شده اند./👇

https://t.me/UnityLearning/575

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




کــانال یونیتی لــرنینگ
💢 @UnityLearning💢
آیا می‌دانید؟!

🔸تمام افرادی که در فیلم های کوتاه Creator Series می‌بینید، بازی سازان حرفه ای هستند که از یونیتی برای ساخت بازی(های) خود استفاده می‌کنند.

☑️ در قسمت سوم این فیلم سؤال این بود «کی میشه گفت ساخت بازی تموم شده؟»

1⃣ یکی از افراد در فیلم گفت وقتی PlayTest انجام شده ساخت بازی هم تمام شده هست.

ℹ️ #پلی_تست چیست؟ پلی تست در واقع تست خروجی نهایی بازی هست البته قبل از اینکه بازی به مرحله انتشار نهایی برسد. در واقع بازی که به طور کامل ساخته شده قبل از اینکه به عنوان نسخه نهایی (Released) منتشر شود، با عنوان بتا(beta) در بین برخی افراد یا همه منتشر کنیم و منتظر دریافت نظرات آنها باشیم وقتی همه نظرات را که به مشکل مهمی اشاره کردند رفع کردیم بازی را با عنوان نسخه نهایی منتشر می‌کنیم. و از نظر آن بازی ساز ساخت بازی در این مرحله تمام شده است.

2⃣ برخی هم در این فیلم اشاره می‌کنند، بازی سازی همیشه ادامه دارد و هیچگاه پایان ندارد. که این هم حرف قابل تاملی هست. بازی همیشه به وسیله Patch ها آپدیت می‌شود و ویژگی های جدید بهش اضافه می‌شود. مثل بازی بسیار معروف Clash of clans که سازندگان آن همیشه و با هر بهانه ای آپدیت های جدیدی از آن را ارائه می‌کنند.

♻️ اکنون و در دوره کنونی اکثر برنامه هایی که ساخته می‌شوند، نیاز دارند به همین شکل باشند. مثل موتور یونیتی که هر دو عمل را همزمان برای موتور خودش انجام می‌دهد. یعنی هم ابتدا نسخه ای که در شرف انتشار است را با عنوان beta ارائه می‌کند و بعد از رفع مشکلات نسخه نهایی را قرار می دهد. هم چنین در طول زمانی که نسخه بعدی ارائه نشده، محصول خود(موتور یونیتی) را آپدیت می‌کند و با عنوان Patch عرضه می‌کند.

👈دو موضوعی که در ایران به هیچ عنوان مهم قلمداد نمی‌شود. نه بازی برای تست ساخته می‌شود و نه برای آپدیت شدن و این علت شکست و عدم موفقیت در ساخت بازی شاید باشد.





⭕️کانال یونیتی لـرنینگ⭕️
💢@UnityLearning💢
⭕️ ساخت #پکیج در یونیتی

(گرفتن خروجی از تغییرات انجام شده روی یک پکیج)

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

Asset>Export package....

👈با انتخاب این گزینه پنجره ای باز می‌شود که شما در آن می توانید فایل های خود را که نیاز دارید در پکیج قرار گیرد و همچنین استراتژی های خاص را برای Decompress شدن پکیج مشخص کنید. در نهایت هم با انتخاب مسیر می توانید پکیج مورد نظر را ذخیره کنید. اگر Unity ID هم داشته باشید و دارای محدودیت هم نباشید می توانید پکیج خود را در Asset Store به اشتراک بگذارید.

🔹این موضوع (گرفتن خروجی از پکیج) زمانی لازم است که شما یک پکیج را بر اساس نیاز تان تغییر داده اید و در نهایت لازم دارید از این پکیج(تغییر داده شده) در پروژه های دیگر خود استفاده کنید. در این صورت مجبور هستید پکیج فوق را از پروژه جاری خود Export کرده و در دیگر پروژه های خود Import کنید./👇

Asset>Import Package>custom package....


#برنامه #یونیتی



⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️حرکت و مسیر یابی

🔸در یونیتی تمهیداتی وجود دارد که شما بتوانید یک آبجکت را برای حرکت خودکار(مثل هوش مصنوعی) و مسیر یابی دقیق آماده کنید. این قابلیت در یونیتی navigation system نام دارد و دقیقا برای همین منظور به کار می‌رود. NavMesh مسیری را برای حرکت در یونیتی تعیین می‌کند.

👈کامپوننت NavMesh Agent  ، برای ساخت کاراکتر هایی به کار می‌رود که قرار است به جهت هدفی حرکت کنند.

🔹در پست های بعدی به طور کامل به توضیح این ویژگی از یونیتی خواهیم پرداخت.




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