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
@UnityLearningUnite2017.mp4
140.9 MB
⭕️ همایش Unite Europe 2017

🔹ساخت انیمیشن و آبجکت های Magic

🖥 کیفیت HD

@UnityLearning
CircularMoving.cs
584 B
#اسکریپت آماده حرکت چرخشی یک آبجکت
به کمک این اسکریپت می توانید کاری کنید آبجکت ها را در هر محلی که هستند، بروی محیط دایره حرکت کنند.

به زبان #سی_شارپ
#توضیحات پست بعدی

@UnityLearning
انجام عملیات #ریاضی

در بازی ها نیاز شدید به استفاده از قوانین ریاضی داریم. این اعمال در برنامه نویسی به کمک #کلاس Mathf انجام می شود. در واقع برای اینکه به خروجی دستورات مثل سینوس/کسینوس، عدد پی و... دسترسی داشته باشیم باید از کلاس مذکور استفاده کرد.

اگر بخواهید از کلاس Mathf در #سی_شارپ استفاده کنید، نیازی به نوشتن using خاصی نیست اما در جاوا باید کتابخانه آن را import کنید. بنابراین دستورات این پست را بر پایه سی شارپ بیان می کنیم و کتابخانه های لازم برای #جاوا اسکریپت را در پست های آتی معرفی می کنیم (البته در پست های قبلی کانال در مورد کلاس Mathf با جاوا اسکریپت توضیحات اندکی داده شده است)

برای محاسبه مقدار سینوس یک زاویه می توانید از دستور زیر استفاده کنید/👇 (دقت کنید متغیر angle به معنای زاویه و از نوع اعشاری است بنابــراین اگر بخواهید مقدار مستقیم بدهید باید آخر عدد حرف f را بنویسید)

Mathf.Sin(Angle);

🔸 برای محاسبه کسینوس یک زاویه نیز به همین شکل عمل می کنیم/👇

Mathf.Cos(Angle);

🔘 برای دسترسی به عدد پی 3.1415.... از دستور زیر استفاده خواهد شد/👇

Mathf.PI;

🔹 دستـــورات در این قسمت به صورت کوتاه بیان می شود.

🔸 دستور Abs قدر مطلق عدد وارد شده را بر می گرداند.

🔸 دستور Tan مقدار تانژانت یک زاویه را بر می گرداند. کلیه دستورات سینوس/کسینوس/تانژانت اگر با حرف a اول نوشته شوند مقدار arc (کمان) را بر می گردانند. «Acos Asin Atan»

🔸 توابع Min/Max بزرگترین/ کوچکترین مقدار وارد شده از بین دو یا بیشتر عدد که در پارامتــر های آن وارد شده است را بر می گرداند.

🔸 برای گرفتن میزان جذر یک عدد از تابع Sqrt استفاده می شود.

🔸 دستور MoveTowards یک مقدار اولیه را به سمت مقدار نهایی (که در پارامترهای اول و دوم وارد شده است) با سرعت داده شده در پارامتر سوم میل می دهد و این مقدار را بر می گرداند.

🔸 با دستور Log نیز می توان لگاریتم یک عدد بر پایه عدد دیگر محاسبه می شود با دستور Log10 لگاریتم مبنای 10 از یک عدد محاسبه می شود. در دستور Log عدد اصلی در پارامتر اول و مبنای محاسبه در پارامتر دوم قرار می گیرد، #مثال/👇

Mathf.Log(6, 2);

دستورات دیگر در پست های بعدی قرار می گیرد، از این دستورات در کد نویسی های #هوش_مصنوعی بسیار استفاده می شود.


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



کـانال یونیتی لرنینگ
💢 @UnityLearning💢
This media is not supported in your browser
VIEW IN TELEGRAM
🎥 Unity3D - Circular Motion

⭕️ #فیلم #آموزش حرکت دایره ای یک آبجکت در سایت #یونیتی

🎞کیفیت HD 720p
مدت زمان فیلم 5/30 دقیقه

@UnityLearning
⭕️ روش های ارتباط با ما

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

آماده دریافت نظرات و سؤالات شما کاربران هستیم.
⭕️ #ادامه مطالب #هوش_مصنوعی

📢بیان کردیم عملی که یک کاراکتر هوش مصنوعی باید در حالت طبیعی انجام دهد. Patrol یا گشت زنی است. همچنین گفتیم عمل پاترول با حرکت آبجکت در محل های تعیین شده (یا تصمیم گیری شده) همراه است.

👁‍🗨 عمل دیگر که یک کاراکتر هوش مصنوعی باید انجام دهد، جستجو به دنبال هدف یا دشمن است. بالاخره این هوش مصنوعی برای نبرد با یک دشمنی ساخته شده است (که target نامیده می‌شود) برای مثال بازیکن فوتبال در زمان نزدیک شدن توپ به سمت آن حرکت می‌کند تا آن را تصاحب کند، بنابراین target در هوش مصنوعی بازی فوتبال می تواند توپ باشد.

▪️با همه این تفاسیر برای تکمیل بحث، اعمال ذکر شده (جستجو به دنبال target ) توسط توابعی با نام CanSeeTarget انجام می‌شود. در واقع این توابع با استفاده از کلاس های Reycast بررسی می‌کند «آیا هدف در دید من هست یا خیر؟»
برای بررسی این موضوع ابتدا باید بررسی شود آیا هدف در شعاع r از من قرار دارد؟ (با بررسی فاصله target تا کاراکتر هوش مصنوعی) در این صورت آیا از نظر فیزیکی من او را می‌بینم یا خیر؟ (یعنی از نظر دیداری آبجکتی بین ما قرار دارد یا خیر) اگر تمام این شرط ها درست باشد یعنی کاراکتر می‌تواند از نظر فیزیکی هدفش را ببینید و تابع CanSeeTatget مقدار true بر می‌گرداند.

🔘در مراحل بعد بازی ساز باید تصمیم بگیرد اکنون چه اتفاقی بیافتد(آیا به سمت هدف تیر اندازی شود یا به سمت او حرکت کنیم ....)

🔜مطالب تکمیلی در پست های آینده کانال

🙏لطفا با معرفی کانال از ما حمایت کنید.

#ادامه_دارد




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
org.telegram.messenger.apk
13.2 MB
⭕️ #تلگرام اندروید به نسخه 4.2.1 ارتقا یافت.

🔹دانلود آخرین رسمی نسخه تلگرام
🔸نسخه دانلود شده از گوگل پلی
⚠️برای دانلود تلگرام برای اندروید های پایین تر 4.4 از گوگل پلی استفاده کنید.

@UnityLearning
CanSeeTarget.js
476 B
⭕️ کدهای کامل تابع CanSeeTatget

👈توضیح داده شده در پست زیر

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

توضیحات بیشتر در پست های بعد

@UnityLearning
AudioSource_Enable.js
247 B
⭕️ اسکریپت #درخواست داده شده

🔸برای فعال و غیر فعال کردن #کامپوننت AudioSource با کلیک راست ماوس

🔹البته پیشنهاد ما استفاده از Play/Pause است.

@UnityLearning
Unity Learning
AutoMove.js
⭕️ #درخواست هایی هست برای اینکه حرکت در اسکریپت داده شده (AutoMove) به صورت تصادفی انجام شود. این کار ساده است به کمک کلاس Random و تابع Range می‌توان به راحتی این کار را انجام داد. یعنی به جای استفاده از یک متغیر برای شمارش (مثل i) از تابع مذکور استفاده گردد.

🔹با این کار اسکریپت هر بار یک گیم آبجکت را به صورت تصادفی انتخاب و به سمت آن حرکت می‌کند

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

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

#هوش_مصنوعی

@UnityLearning
⭕️ مطالبي در مورد #يونيتي

👈ـUnity يکي از 5 موتور بازي سازيِ ساخته شده در جهان است که آخرين نسخه آن نسخه 5 بتا مي باشد که در سال 2014 ارائه شده است.

▫️5 موتور بازي سازي برتر: Unreal Engine ، Game Maker ، Cry Engine ،Id Tech و Unity هستند که در ميان آن ها Unreal بيشترين هوادار را دارد و بازي هاي حرفه اي با آن ساخته شده است. Unity بعد از Unreal معروف شد و از آن به بعد هواداران خاص خود را پيدا کرد. اين موتور بازي سازي به علت سادگي و قابليت انعطاف بالايي که دارد مورد محبوبيت قرار گرفت.

🔹يک موتور بازي سازي به مجموعه ي نرم افزاري گفته مي شود که به وسيله آن ها مي توان يک بازي کامپيوتري يا هر کنسول ديگري را توليد کرد. منظور از مجموعه نرم افزاري اين است که موتور بازي سازي مي تواند خودش شامل نرم افزار هاي مختلفي از جمله طراحي اشيا گرافيکي،طراحي منظره ها ، و طراحي محيط بازي باشد.
براي مثال 3D MAX نرم افزار ساخت اشياي گرفيکي است،Photoshop CS نرم افزار طراحي منظره ها و Unity نرم افزار طراحي محيط بازي است.


🔹همانطور که بيان شد موتور بازي سازي يونيتي محيط بسيار ساده و کاربر پسندي براي ساخت بازي استفاده کرده است. که کاربران آن به راحتي و با داشتن اندکي اطلاعات قبلي مي توانند با آن کار کنند. در صورتي که کاربر کار برنامه نويسي هم بلد باشد مي توانند بازي هاي خوبي با آن توليد کند. برخي ويژگي هاي اصلي موتور بازي سازي يونيتي را به اين شرح بيان مي کنيم:

▫️برنامه نويسي کم

▪️ارائه بازيکن اول شخص و سوم شخص

▫️پلتفرم هاي خروجي متداول

▪️ورودي از نرم افزار هاي متداول

▫️ويرايشگر اسکريپت متن باز
(نرم افزار MonoDevelop)

▪️پشتيباني از زبان هاي برنامه نويسي مختلف

💲جالب بدونيد قيمت فروش يونيتي در سال 2012 هزار و پونصد دلار براي يک عمر در نظر گرفته شده است اين در حالي است که کاربران ايراني معمولاً از لايسنس کرک شده براي اين برنامه استفاده مي کنند.

🔜 توضيحات تکميلي در مورد معرفي يونيتي به طور کامل توضيح داده مي شود.

📉 آمارهاي يونيتي

🔸 آمار هاي مختلفي از يونيتي منتشر شده است که البته بهترين منبع سايت خود یونیتی است.
[مربوط به سال 2015]

• 600 ميليون Gamer (بازيکن) در حال حاضر
• 829 ميليون بازديد روزانه از صفحه فيسبوک
• تعداد مشتريان يونيتي در سال 2015، 4.5 ميليون مشتري (Developer)
• 45 درصد از سهام يونيتي در بورس
• محبوب ترين موتور در بازي سازي موبايل

🔘سايت Unity3d يک آمار منتشر کرده که مي گويد Game Engine يونيتي محبوب ترين و پر استفاده ترين موتور در بازي هاي موبايل است.



⭕️کانال یونیتی لرنینگ⭕️
💢 @UnityLearning💢
Mahmood_Jahan_Ahl_e_vatan.mp4
17.8 MB
◼️دانلود آهنگ خاطره انگیز سلام اهل وطن به صورت تصویری

◾️کلیپی که خاطره های زیادی را برای ما زنده می‌کند.

⚫️درگذشت این خواننده عزیز کشورمان را تسلیت عرض می‌کنیم.

روحش شاد، یادش گرامی

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

🔸 یکی از ساده ترین روش ها برای اجرای مجدد یک بازی استفاده از دستور LoadLevel است. در کلی ترین حالت اگر دستور زیر استفاده شود/ بازی در هر مرحله ای که هست از اول اجرا می شود.

Application.LoadLevel(Application.loadedLevel);

🔹 در صورتی که بخواهید تنها مرحله خاصی مجدداً اجرا شود شماره یا نام آن مرحله را در پارامتر LoadLevel می دهیم . مثلا اجرای مرحله اول (شروع مراحل از صفر است)

Application.LoadLevel(0);

🔸 برای سی شارپ نیز می توانید بعد از اضافه کردن پارامتر زیر /👇

using UnityEngine.SceneManagement;

👈 که برای مدیریت Sceneهای بازی استفاده می شود، از دستور زیر برای لود کردن مرحله خود (که نام آن داده شده است) استفاده کنید /👇

SceneManager.LoadScene(SceneManager.GetActiveScene().name);

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



کانال یونیتی لرنینگ
💢 @UnityLearning💢
MCPR.exe
8.3 MB
برنامه حذف کننده کلیه فایل های مربوط به کلیه محصولات مکافی

🛡Mcafee Product Remover

💡بعد از حذف آنتی ویروس از Control panel این برنامه را اجرا کنید.

@UnityLearning
🔸یونیتی برای Decompression کردن پکیج های خود از نرم افزار های فشرده سازی استفاده می‌کند، توصیه ما نصب آخرین نسخه از نرم افزار 7Zip است که برای دانلود در کانال قرار گرفته است. این نرم افزار رایگان است اما از سرعت بسیار بالایی برخوردار است. اگر هم نرم افزار winrar و هم 7Zip را نصب کرده باشید، یونیتی از 7Z برای Decompress کردن پکیج های خود استفاده می‌کند.

📍این نرم افزار فوق العاده است و به کمک آن شما می‌توانید هر فایلی را باز کنید، مثلا اگر یک فایل نصبی exe داشته باشید که باز نمی‌شود با کمک 7Zip می توانید این فایل را باز و به فایل های درون آن دسترسی داشته باشید.

◀️این برنامه در پست های زیر از کانال برای دانلود قرار گرفته است/👇

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

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

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




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️توضیحاتی در مورد تابع OnCollisionEnter

🔹این تابع زمانی در یونیتی اجرا می‌شود که دو جسم دارای Collider/Regidbody یک دیگر را به اصطلاح لمس کنند(به هم برخورد کنند)

🔹پارامتر ورودی این تابع کلاس Collision است که مختصات محل برخورد(لمس) در آن اتفاق اُفتاده است. این مختصات برای هر محل لمس در آرایه ای از کلاس Collision قرار می‌گیرد. این آرایه contacts نام دارد و از آن می توان به مختصات محل برخورد دسترسی داشت. پارامتری که از contacs در آن مختصات قرار می‌گیرد point نام دارد که از جنس Vector3 می‌باشد (دقیقا مثل پارامتر position در کلاس transform)

▪️به طور مثال خط زیر مختصات اولین نقطه برخورد دو آبجکت را به هم بر می گرداند./👇

collision.contacts[0].point;

👈اگر بخواهیم آبجکتی در محل بر خورد ایجاد شود (مثل آتش در محل برخورد موشک) از دستور instantiate استفاده می‌شود.

🔜 مطالب تکمیلی در پست های آتی قرار خواهد گرفت.

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

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


#اسکریپت_نویسی #کد_نویسی به زبان #جاوا و #سی_شارپ در #يونيتي




⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ #تابع SetActive

🔹این تابع یک گیم آبجکت را فعال یا غیر فعال می‌کند. در زمان غیر فعال شدن یک گیم آبجکت کلیه کامپوننت های متصل به آن نیز غیر فعال می‌شود، توابع Update تمام اسکریپت های متصل و موارد مشابه از کار می‌افتند. به طور #مثال دستور زیر گیم آبجکتی که کد به آن متصل شده است را غیر فعال می‌کند (دقت کنید که همین اسکریپت که کد را در آن نوشتیم نیز غیر فعال می‌شود)

gameObject.SetActive (false);

🔸اکتیو بودن یک گیم آبجکت را می توان با دو پارامتر زیر بررسی کرد/👇

GameObject.activeSelf

GameObject.activeInHierarchy

👈این دو پارامتر Read only هستند و فقط مقدار true یا false بر می گردانند.


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
⭕️ اضافه کردن یک #کامپوننت خاص در زمان اجرا بازی

برای اینکه بتوان یک کامپوننت خاص در زمان اجرا (Runtime) بازی به gameobject مورد نظر اضافه شود از تابع AddComponent استفاده می‌شود.

🔘هر نوع کامپوننتی که در پارامتر به تابع بدهیم را در همان لحظه به گیم #آبجکت مورد نظر اضافه شده و خود آن برای کار های بعدی برگردانده می‌شود. به طور #مثال دستور زیر یک کامپوننت SphareCollider را به گیم آبجکت جاری(که کد به آن متصل است) اضافه میکند./👇

gameObject.AddComponent(SphereCollider);

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

🔜 مطالب تکمیلی در پست های آینده قرار خواهد گرفت.

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


⭕️کانال یونیتی لرنینگ⭕️
💢@UnityLearning💢
👤قابلیت جدید Biography در #تلگرام

🔸به منظور اضافه کردن اطلاعات شخصی (در حد 50 حرف در یک خط) می‌توان از این قابلیت جدید در تلگرام استفاده کرد.

@UnityLearning
برخی دستورات مربوط به GameObject

به کمک دستور transform می توان به Transformیی که این گیم #آبجکت به آن متصل است دسترسی داشت و این دستور آن را بر می گرداند. #مثال ساده، برای دسترسی به پارامترهای موقعیتی یک game object باید از دستور transform استفاده کرد (چون همانطور که می دانید position از پارامتــرهای یک Game Object نیست!)

🔸به طور #مثال برای جابجا کردن یک گیم آبجکت می توان از دستور زیر استفاده کرد/👇

other.transform.Translate(1,1,1);

🔘 دقت کنید other از نوع GameObject است یعنی به شکــل زیر تعریف شده است/👇

var other : GameObject;

🔹 برای بدســـت آوردن Scene که یک آبجکت در آن قرار گرفته است از پارامتر scene استفاده می کنیم. خروجی این پارامتر از نوع SceneManagement.Scene است که می توان به عنوان نام به دستورات مربوط به جابجای Scene داد (مثل LoadLevel و...)

GameObject.scene;

👈 این دستور Scene که GameObject در آن قرار گرفته است را بر می گرداند.


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

@UnityLearning
برخی دستورات مربوط به GameObject #ادامه

👈دستور tag اسم تگ Game Object مورد نظر را بر می گرداند، اگر برای گیم #آبجکت تگی در نظر گرفته نشده Untagged را بر می گرداند. (خروجی دستور رشته ای است و برای تست آن باید مقدار خروجی را با مقدار رشته ای چک کرد)

gameObject.tag = "Player";

🔸این دستور تگ یک گیم آبجکت را به Player تغییر می دهد، بنابراین کاربرد دیگر این پارامتر در تعیین تگ یک گیم آبجکت است.

⭕️توابع مهم کلاس GameObject

👈کلاس GameObject، کلاسی برای مدیریت گیم آبجکت ها در یونیتی است که دستورات زیادی دارد. در این پست به بررسی تعدادی از آنها می پردازیم و سایر دستورات را نیز در پست های بعدی بیان خواهیم کرد. دقت کنید به کمک تگ #ادامه می توانید به مطالب دنباله دار دسترسی داشته باشید. مطالبی هم که تگ « #ادامه_دارد » دارند، نیز مطالبی هست که در پست های بعدی ادامه مطالب آن قرار گرفته است.

▫️یکی از مهمترین توابع این #کلاس ، دستور Find است، به کمک این دستور می توان به یک گیم آبجکت که اسم آن را داده ایم دسترسی داشت. قوانین استفاده از این دستور زیاد است/ در این پست فقط شکل کلی تابع را بیان می کنیم و قوانین مختلف آن را در پست های بعدی قرار خواهیم داد.

▪️شکل کلی #تابع Find به نحو زیر است/👇

var hand : GameObject;

hand = GameObject.Find("Hand");

👈به طور کلی این دستور آبجکتی که اسم آن Hand است را بر می گرداند و در متغیر hand قرار می دهد و در ادامه برنامه نویس می تواند مانند یک گیم آبجکت مستقل با آن رفتار کند.

(بهترین محل برای استفاده از این دستور تابع Start است)

🔹دستور FindWithTag اولین گیم آبجکتی که دارای تگ داده شده است را بر می گرداند. خروجی آن از نوع یک متغیر GameObject است. اما اگر می خواهیم به مجموعه ای از گیم آبجکت ها که دارای تگ خاصی هستند دسترسی داشته باشیم از دستور FindGameObjectsWithTag استفاده می کنیم که خروجی آن از نوع آرایه ای از GameObject هاست که دارای تگ مورد نظر هستند و برای دسترسی به تک تک آنها باید آرایه را پیمایش کرد.

(به طور مثال اسکریپت ایجاد یک گیم آبجکت در محل کلیه آبجکت هایی که دارای تگ Player هستند در پست بعدی قرار می گیرد، لطفا به این اسکریپت دقت کنید چون دستورات پیمایش آرایه (از نوع GameObject) در آن بیان شده است، سایر دستورات آن را که قبلاً توضیح داده ایم مثل دستور Instantiate برای ایجاد یک گیم آبجکت)

#ادامه_دارد

🔜سایر توابع کلاس GameObject در پست های بعدی قرار خواهد گرفت.

@UnityLearning