وبلاگ هایی مثل : http://mgames-blog.aloblog.ir
خجالت بکشن که کپی میکنن حداقلش منبع بزنید
اگر دفعه بعد دیدم آموزش هام رو پولی میکنم
ضمن اینکه وبلاگ گروه ما یعنی وبلاگ MGames فقط همین
وبلاگ هست و اگر جای دیگری دیدید توجه نکنید
چرا که از ما کپی کرده نمونه اش هم وبلاگ بالایی
و یه چیز دیگه که هست اینه که من نوسینده وبلاگ gameover.blog.ir هم هستم و بعضی مطالب ما مثل هم هست
و این رو هم بدونید فقط تا به حال من نویسنده این Gameover.blog.ir , MGames.blog.ir وبلاگ ها هستم.
Telegram ID : @MGameMaker
Telegram Channel : @MGamesblog
هزینه تبلیغات در هر ماه : (دارای تخفیف هستند و به زودی تخفیفات برداشته میشود)
تبلیغات متنی : 1000 تومان
تبلیغات عکسی : 2500 تومان
تبلیغات عکسی متحرک : 3500 تومان
تبلیغات در فیلم های آموزشی که توسط ما ساخته میشه : 5000 تومان(این نوع تبلیغ برای فقط 1 ماه نیست و برای همیشه است)
تبلیغات در بازی های ما : فعلا این بخش فعال نیست
برای تبلیغ به تلگرام ما پیام بدید
این وبلاگ دیگه فعالیت نداره و به سایت زیر انتقال یافت
difiles.ir
در این پلاگین ابزارهای کاربردی اندروید برای گیم میکر استودیو قرار داده شده اند.
امکانات کلی پلاگین:
منبع : promakers.ir , gamesedit.ir
به نظر من اگر مبتدی هستی با این آموزشات شروع کن که واقعا هم یاد میگیریشون (رایگان)
اگر مشکلی پیش اومد برای لینک ها و یا مشکل داشتید با قسمتی از آموزش در بخش نظرات مطرح کنید
قسمت اول(1) : دانلود
قسمت اول(2) : دانلود
قسمت دوم : دانلود
قسمت سوم : دانلود
قسمت چهارم : دانلود
قسمت پنجم : دانلود
قسمت ششم : دانلود
قسمت هفتم : دانلود
قسمت هشتم (1) : دانلود
قسمت هشتم (2) : دانلود
قسمت هشتم (3) : دانلود
فایل های استفاده شده در آموزش :
خب اینم از کد :
توضیحات کد زیر :
agent.autoBraking به وسیله این کد میشه برای آبجکتمون تعریف کرد که به حرکت خودش ادامه بده (در صورت false بودن)
agent.destination این کد هم مسیر رو تنظیم می کنه
% در زیان C# عملگر باقی مانده هست
points.Length اندازه متغییر های درون آرایه points رو بهمون میده مثلا شما توی points چهار متغییر برای نقاط روی نقشه گزاشتید این کد هم 4 رو بر میگردونه
agent.remainingDistnace این کد مقدار فاصله مونده تا مقصد رو بر میگردونه
خب بقیه رو خودتون باید درک کنید من توضیح خاصی توی کد نمی بینم
اگر کد کار نکرد :
-چک کنید Navigation رو درست انجام دادید
-چک کنید که points ها رو هم به اسکریپت نسبت داده باشید
-آبجکتی که اسکریپت رو بهش دادید باید NavMeshAgent داشته باشه
// Patrol.cs
using UnityEngine;
using System.Collections;
public class Patrol : MonoBehaviour {
public Transform[] points;
private int destPoint = 0;
private NavMeshAgent agent;
void Start () {
agent = GetComponent<NavMeshAgent>();
// Disabling auto-braking allows for continuous movement
// between points (ie, the agent doesn't slow down as it
// approaches a destination point).
agent.autoBraking = false;
GotoNextPoint();
}
void GotoNextPoint() {
// Set the agent to go to the currently selected destination.
agent.destination = points[destPoint].position;
// Choose the next point in the array as the destination,
// cycling to the start if necessary.
destPoint = (destPoint + 1) % points.Length;
}
void Update () {
// Choose the next destination point when the agent gets
// close to the current one.
if (agent.remainingDistance < 0.5f)
GotoNextPoint();
}
}
خب در این قسمت قراره آموزش ببینید که چطور به هوش مصنوعی قبلی کدی رو اضافه کنیم که اگر هدف رو دید دنبال کنه
و چون این مبحث یه مقدار سنگین هست نسبت به قسمت قبلی برای همین بخش تیر زدن رو در این قسمت آموزش نمی دم
اینم کد جدید :
توضیحات :
MaxSee یه متغییر از نوع اعشاری برای حداکثر فاصله دید
Saw یه متغییر از نوع bool که اگر هدف رو دیدیم این متغییر true میشه(بوسیله کد هایی که نوشته شده)
شرط ها رو هم که قبلا توضیح داده شده و فقط یه شرط برای دیدن اضافه شد ( || یعنی (یا) و && یعنی (و) )
Ray r بوسیله این کد یه Ray ساختیم و transform.position یعنی موقعیت فعلی رو برای شروعش دادیم و جهتش رو رو به جلو گزاشتیم (transform.forward)
-زیاد وارد بحث RaycastHit , Ray نمیشم چون خیلی چیز رو باید توضیح بدم در اون صورت و مقاله در موردش توی همین وبلاگ وجود داره میتونید استفاده کنید.
Physics.Raycast با این کد که سه ورودی میگیره ( در حالت عادی ) اولیش اشعه Ray هست و دومیش همون RaycastHit هست و سومیش هم حداکثر فاصله و بعدش اگر به جسمی برخورد کرده مقدار true رو بر میگردونه و اگر برخورد نکرد false رو بر میگردونه و ما نیز این مقدار رو که بر میگردونه رو داخل متغییر Saw میریزیم
در آموزش بعد یاد خواهیم گرفت :
با نزدیک شدن به هدف به آن تیر بزنیم
با دور شدن از هدف بایستیم
خب در این بخش قراره یاد بگیرید که چطور به هوش مصنوعی قبلی یه سیستم اضافه کنیم
که اگر نزدیک هدف شد متوقف بشه و برعکس :
توضیحات :
همونطور که در کد بالا میبینید کد nav.SetDestination قبلا توی Start بود ولی الان در هر فریم موقییت هدف رو دنبال می کنه و اگر شما کد قبلی رو اجرا کرده باشید و این کد رو هم اجرا کنید متوجه فرقشون میشید
در کد قبل اگر هدف فرار میکرد ما دنبالش نمی رفتیم ولی در این کد و با این کار هدف دنبال میشه
متغییر های MinDistance , Speed اضافه شدن که اولی برای سرعت و دومی برای حداقل فاصله است.
Vector3.Distance
این تابع یا کد دو ورودی (آرگومان) داره که اولیش = مختصات خودمون و دومیش = مختصات هدف است و به ما فاصله بین این دو رو به صورت float میده
nav.speed
این تابع سرعت رو تنظیم میکنه و همونطور که میبیند ما شرط گزاشتیم که اگر فاصله به حداقل رسید سرعت 0 بشه و اگر فاصله تغییر کرد و حداقل نبود سرعت هم تغییر کنه و برابر Speed (متغییری که در بالا تعریف شده ) بشه
در آموزش بعد یاد خواهیم گرفت :
با دیدن هدف آن را دنبال کنیم
به هدف رسیدیم بهش شلیک کنیم
منبع : gameover.blog.ir
برید به رویداد Create :
Clicked = false
برید رویداد Mouse Left Button :
Clicked = true
برید رویداد Draw :
()draw_self
(if(Clicked
("",draw_text(x,y
به جای "" متن مورد نظر را بنویسید
برای ذخیره متغییر باید مشخص کنید متغییر از کدام نوع هست
اگر متغییری که میخواهید ذخیره کنید int باشد
(3,"")PlayerPrefs.SetInt
درون "" باید یک اسم برای متغییر انتخاب کنید مثلا اگر demo را انتخاب کنید باید اینگونه بنویسید "demo"
و به جای 3 میتوانید مقدار int را بنویسید مثلا اگر میخواهید متغییر int به نام myint رو سیو کنید باید عدد 3 را پاک
و به جای آن myint رو بزارید یا میتونید یه عدد جاش بزارید
و برای لود کردن اون میتونید از
;("")PlayerPrefs.GetInt
استفاده کنید
به جای "" باید اسم متغییری که قبلا سیو کردید رو بدید مثلا اگر مثل کد بالا اسم رو demo نوشته باشید باید بنویسید "Demo" :
;("")int a = PlayerPrefs.GetInt
در مثال بالا مقدار رو بارگزاری میکنه و درون متغییری به نام a میریزه
برای ذخیره و بارگزاری String , Float کافیه اون Int درون کد PlayerPrefs.GetInt یا Int درون کد PlayerPrefs.SetInt رو به String یا به Float تغییر بدید