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
⭕️ نحوۀ چرخش در دستور Lerp از #کلاس Quaternion

این تابع سه پارامتر اصلی دارد. 1-جهت آبجکت اول 2-جهت آبجکت دوم 3-پارامتر زمانی (سرعت چرخش)

@UnityLearning
⭕️ #مثال هایی کاربردی از دستور FindGameObjectsWithTag

🔹 همانطور که می دانید از این دستور برای پیدا کردن تمامی آبجکت هایی که دارای تگ خاصی هستند استفاده می شود. یعنی این دستور در قالب یک آرایه از نوع GameObject تمامی آبجکت های داری تگ مورد نظر را بر می گرداند. این دستور از #کلاس GameObject بوده و نحوۀ استفاده از آن به شکل زیر است./🔻

var gos : GameObject[];
gos = GameObject.FindGameObjectsWithTag("TagName");

🔸با اجرای کد بالا کلیه آبجکت هایی که تگشان (TagName) می باشد در آرایۀ gos قرار می گیرد.

💡در پست های بعدی، مثال هایی از این دستور در قالب «قطعه کد» قرار خواهد گرفت.

@UnityLearning
FindClosestEnemy.js
1 KB
⭕️ #قطعه_کد پیدا کردن نزدیک ترین آبجکت دشمن (با تگ Enemy) به آبجکت جاری

[این اسکریپت یک تابع به نام FindClosestEnemy می باشد که این تابع نزدیک ترین آبجکت دشمن را در خود بر می گرداند]

@UnityLearning
FindGameObjectsWithTag.js
729 B
⭕️ #قطعه_کد بررسی یک آرایۀ خالی با دستور length

[دستور FindGameObjectsWithTag در صورتی که هیچ آبجکتی با تگ داده شده پیدا نکند هیج مقداری را بر نمی گرداند و آرایه خالی می ماند]

@UnityLearning
⭕️ توابع OnEnable و OnDisable

🔹 این دو تابع برای یک آبجکت زمانی اجرا می شوند که فعال یا غیر فعال شود. یعنی زمانی که یک آبجکت Active/Enable می شود تابع OnEnable یک بار اجرا خواهد شد و همین موضوع برای تابع OnDisable نیز اتفاق خواهد افتاد.

🔸 بهتر است برای عدم دریافت مشکلات کمتر از سی شارپ برای استفاده از این توابع استفاده کنید، چون حالت استفاده از این توابع در جاوا اسکریپت کمی مشکل است.

void OnEnable(){
....
}

void OnDisable(){
....
}

از این توابع در یونیتی بسیار استفاده می شود و کاربرد آنها بسیار بالاست.

@UnityLearning
⭕️ #پکیج سرباز جهانی شامل سرباز آمریکایی و حالت FPS(دست سرباز و اسلحه)

🔸کیفیت بالا و طبیعی بودن تکسچر ها از ویژگی های این پکیج است. این پکیج دارای افکت های خاص دیدن برای Camera نیز هست.
WA US Soldier Pack v.1.1.unitypackage
670.5 MB
⭕️ #دانلود پکیج سرباز جهانی

🔹علت حجم بالای این پکیج بالا بودن کیفیت تکسچر ها میباشد. قیمت این پکیج در استور یونیتی 75 دلار می‌باشد.

WA US Soldier Pack

@UnityLearning
[کربلای معلی، هم اکنون]

⚫️ فرا رسیدن اربعین شهادت سالار شهیدان حضرت اباعبدالله الحسین (ع) را تسلیت می‌گوییم.

◼️ السلام علیک یا اباعبدالله

@UnityLearning
⭕️ #نکته برنامه نویسی

🔸 همانطور که می دانید، برخی از دستورات در ورژن های جدید یونیتی ارائه می شوند و دستورات قبل ممکن است دیگر برای ورژن جدید شناخته شده نباشند و کارایی نداشته باشند، مثلاً دستور SetActive که در ورژن های اخیر یونیتی اضافه گشته و جایگزین دستوراتی مثل SetActiveRecursively و Active شده است. گاهی یک کد نویس قصد دارد یک کد عمومی بنویسد و در اینجا لازم است کدش در هر نسخه ای از یونیتی قابل استفاده باشد، روش حل این موضوع به شکل زیر است/🔻

#if UNITY_3_5 Obj.SetActiveRecursively(false);
#else
Obj.SetActive(false);
#endif

🔹نوشتن if به این شکل (یعنی همراه با علامت شارپ #) یک شرط خاص برای یونیتی ایجاد می کند. مثلا دستور بالا می گوید اگر کامپایلر Unity3.5 است از دستور SetActiveRecursively استفاده کن و برای سایر ورژن ها از SetActive .

💡به کمک دستور SetActive در یونیتی می توان یک آبجکت را فعال/غیر فعال کرد. [توضیحات بیشتر در پست زیر/🔻]
https://t.me/UnityLearning/800

@UnityLearning
⭕️ استفاده از یک اسکریپت دیگر در اسکریپت جاری

💡 گاهی اوقات لازم است بتوانیم به یک اسکریپت (که در یونیتی از نوع Component است ) در کدهای خود دسترسی داشته باشیم. معمولاً این دسترسی برای «غیرفعال کردنِ اجرای آن اسکریپت» می باشد اما می تواند هر کاربرد دیگری نیز داشته باشد.

[این آموزش در اسکریپت نویسی به زبان #سی_شارپ کاربرد دارد]

🔹 ابتدا لازم است یک متغیر از نوع کامپوننت تعریف شــــود./🔻
Component Script;

📍 سپس تنها کافی است با دستور GetComponent مانند زیر به اسکریپت متصل شده به Obj دسترسی داشــــت./🔻
Script= Obj.GetComponent<ScriptName> ();

🔸 در صورتی که بخواهیم اجرای اسکریپت فوق متوقف شود، از دستور enabled استفاده خواهیم کـــرد./🔻
Script.enabled=false;

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

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

@UnityLearning
Unity Learning
⭕️ استفاده از یک اسکریپت دیگر در اسکریپت جاری 💡 گاهی اوقات لازم است بتوانیم به یک اسکریپت (که در یونیتی از نوع Component است ) در کدهای خود دسترسی داشته باشیم. معمولاً این دسترسی برای «غیرفعال کردنِ اجرای آن اسکریپت» می باشد اما می تواند هر کاربرد دیگری نیز…
⭕️ انتقال از یک آبجکت حرکتی به آبجکت دیگر

#ادامه دستورات

🔸یکی از کاربردهای فعال و غیر فعال کردن #کامپوننت ها، به خصوص اسکریپت ها، جابجایی از آبجکت های حرکتی به هم می باشد. منظور از این کار مثلاً «سوار شدن به ماشین» یا هر وسیله حرکتی دیگر می باشد. در این زمان باید یک سری موارد از کاراکتر اصلی غیر فعال و مشابه همانها در آبجکت دیگر فعال شود و همین عمل در زمان پیاده شدن باید برعکس اتفاق بیافتد.

🔹در یونیتی در هر زمان باید یک دوربین فعال وجود داشته باشد بنابراین اولین موردی که باید تغییر کند دوربین بین آبجکت ها می باشد. همچنین معمولاً حرکت به وسیلۀ اسکریپت ها صورت می پذیرد بنابراین باید اسکریپت حرکتی کاراکتر اصلی غیر فعال و برای وسیلۀ دیگر فعال شود. اسکریپت حرکتی برای FPS به نام Character Controller می باشد و برای سایر آبجکت ها نیز شما باید کد نوشته باشید. با این اعمال کلیه کارها از آبجکت اول(مثلا کاراکتر FPS) به آبجکت دوم(مثلاً ماشین) منتقل خواهد شد و به نظر خواهد رسید کاراکتر شما به ماشین سوار می شود. مثال/🔻
GetComponent< CharacterController> () .enabled=false;

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

#ادامه_دارد

@UnityLearning
Unity Learning
⭕️ توابع OnEnable و OnDisable 🔹 این دو تابع برای یک آبجکت زمانی اجرا می شوند که فعال یا غیر فعال شود. یعنی زمانی که یک آبجکت Active/Enable می شود تابع OnEnable یک بار اجرا خواهد شد و همین موضوع برای تابع OnDisable نیز اتفاق خواهد افتاد. 🔸 بهتر است برای عدم…
⭕️ #ادامه مطالب توابع OnEnable OnDisable

🔹 از دستورات زمانی در این توابع نمی توان به طور مستقیم استفاده کرد (مانند تابع Update که نوشتن دستورات زمانی تأخیر در آن تأثیر اجرایی نداشت!)
برای این کار لازم است یک تابع فرعی تعریف کرده و با دستور StartCoroutine آن را در توابع مذکور صدا بزنیم در این صورت کلیه دستورات تاخیری اجرا خواهند شد و مشکلی پیش نخواهد آمد.
به طور مثال اگر بخواهیم یک اسکریپت 5 ثانیه بعد از فعال شدن آبجکت خود را غیر فعال کند، مجبور به استفاده از تابع OnEnable هستیم اما استفاده از دستورات WaitFor در یونیتی ما را با خطای کامپایلری مواجه خواهد کرد. راه حل استفاده از یک تابع فرعی به شکل زیر است./🔻 ( #جاوا )
function OnEnable () {
StartCoroutine(Wait());
}
function Wait()
{
yield WaitForSeconds(5); gameObject.SetActive(false);
}

[با استفاده از دستورSetActive عمل غیر فعال کردن GameObject که کد به آن متصل شده است صورت می پذیرد]

🔸 این اسکریپت برای اعمال بسیاری کاربرد دارد و هر بار که آبجکت با هر دستور دیگری در برنامه فعال (Active) شد ، بعد از 5 ثانیه آن را غیر فعال می کند.

@UnityLearning
Android Bluetooth Multiplayer Pro.unitypackage
4.2 MB
⭕️ #دانلود #پکیج ایجاد ارتباط بلوتوث بین گوشی های اندروید برای ساخت بازی های چند نفری

android bluetooth multiplayer pro

📍با تشکر از فرستنده پکیج

@UnityLearning
MovingElevator.cs
744 B
⭕️ اسکریپت آماده حرکت آسانسور

این اسکریپت، آبجکت را به صورت بالا و پایین طبق قاعدۀ خاص مانند آسانسور حرکت می‌دهد. #سی_شارپ

@UnityLearning
⭕️ کاربرد Layer (لایه)ها در یونیتی

🔹 لایه ها در یونیتی مانند تگ ها برای دسته بندی آبجکت ها به کار می روند. لایه ها معمولا در یونیتی برای ایجاد محدودیت در عملیات Reycast استفاده می شود. منظور از ایجاد محدودیت این است که بین آبجکت های مقصد Reycast تفاوت ایجاد گردد و یک Reycast روی گروهی از آبجکت ها به یک شکل عمل کند و روی گروه دیگر به شکل دیگر.

🔸 در یونیتی دو نوع Layer وجود دارد. هشت Layer اول [Builtin Layers] نام دارند و پیش فرض یونیتی هستند و قابل تغییر توسط کاربر نیستند.
از لایه شماره 8 تا 32 نیز برای تعریف توسط کاربر وجود دارند و کاربر می تواند از آنها استفاده کند. [User Layers]

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

@UnityLearning
⭕️ کاربرد Layerها در یونیتی (#ادامه |کدنویسی)

🔹 برای بررسی Layer تعیین شده برای یک آبجکت خاص می توان از اندیس آن استفاده کرد. با مقایسۀ اندیس می توان تفاوت خاص را در اسکریپت نویسی انجام داد. /🔻
gameObject.layer = 2;

🔸 دستور بالا layer آبجکت (که کد به آن متصل شده است) را روی 2 تنظیم می کند. [ لایه 2 ، لایه ایست که در پنجره Tags and Layer در مقابل Layer2 قرار گرفته است ]

if (gameObject.layer == 8 ) {...

📍 دستور بالا نیز بررسی می کند اگر آبجکت مورد نظر دارای Layer شماره 8 می باشد عمل شرط انجام شود.

@UnityLearning
🔴 خبر فوری

زمین لرزه ای به بزرگی 7.2 ریشتر مرز ایران و عراق در منطقه حلبچه را لرزاند. این زمین لرزه حدود 30 دقیقه پیش در عمق 19 کیلومتری زمین رخ داده است.

مرکز زلزله نگرانی ایران زلزله را 7.3 ریشتر اعلام کرد.
🔴 پزشکی قانونی تاکنون تعداد تلفات را 129 نفر اعلام کرده است. /شبکه خبر

@UnityLearning
⚫️ درگذشت تعدادی از هموطنان عزیزمان در استان های غربی کشور به خصوص استان کرمانشاه در پی وقوع زمین لرزه را #تسلیت عرض می‌کنیم.

⚫️ بر اساس آمار 1 بعد از ظهر در این زمین لرزه تاکنون بیش از 336 نفر از هموطنانمان کشته شده اند.

@UnityLearning
Unity Learning
ایجاد تاخیر در کد نویسی 🔹 به منظور ایجـــاد تاخیر زمانی در اجرای اسکریپت ها روش های مختلفی وجود دارد، که زمان استفاده صحیح از آن ها مهم است. یعنی کد نویس باید بداند که از چه روشی در چه موقعیتی می تواند استفاده کند. 🔸یکی از این روش ها استفاده از دستورات…
⭕️ استفاده از دستورات ایجاد تأخیر در #سی_شارپ

🔹 در یونیتی توابعی که بتوانند در میان اجرای دستورات شان متوقف شوند، CoRoutine نامیده می‌شوند، این توقف در هر خط که کلید واژه yield وجود داشته باشد اتفاق میافتد. به بیان دیگر هر تابعی که در دستوراتش تعلیق اجرا صورت گیرد Coroutine نامیده می‌شود.

🔸 تعریف توابع Coroutine در #جاوا اسکریپت تفاوتی با سایر توابع ندارد و مانند قبل بدون هیچ کلمه اضافی خود تابع در صورتی که درونش دستورات yield وجود داشته باشد به coroutine تغییر ماهیت می‌دهد. اما تعریف این توابع در #سی_شارپ کمی متفاوت است. برای تعریف یک تابع از نوع Coroutine از کلید واژه IEnumerator قبل از نام تابع استفاده می‌شود (در واقع این کلمه باعث می‌شود کامپایلر تابع مورد نظر را یک Coroutine در نظر بگیرد)

🔘 شکل کلی یک تابع coroutine در یونیتی مانند زیر است./🔻
IEnumerator Wait() {
....
📍 دستور بالا یک تابع به نام Wait که از نوع coroutine است می سازد، دقت کنید باید حتماً در دستورات این تابع از کلمه yield استفاده شده باشد در غیر این صورت با مشکل مواجه می شوید. برای استفاده از دستور WaitForSeconds در #سی_شارپ از شکل دستوری زیر استفاده می شود./🔻
yield return new WaitForSeconds(5);

💡 دستور بالا کامپایلر را در مدت 5 ثانیه در این تابع متوقف می کند (این دستور باید در توابع coroutine تعریف شود در غیر این صورت خطا گرفته می شود.)

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