آموزش نگاه کردن گیم ابجکت به گیم آبجکتی دیگر در یونیتی

آموزش نگاه کردن گیم ابجکت به گیم آبجکتی دیگر در یونیتی

به نام خدا

در این آموزش یونیتی می خواهیم نحوه قفل شدن نگاه یک گیم آبجکت (محور z) ، به یک آبجکت دیگر را آموزش دهیم.

در ابتدا نتیجه نهایی آموزش را مشاهده کنید:

 

 

ابتدا از منوی GameObject --> 3D Object یک Cube و Cylinder را وارد پروژه کردیم.

سپس یک اسکریپت سی شارپ ایجاد کرده و کدهای زیر را درون آن تایپ کردیم.

 

 

در خط 6 یک متغیر با سطح دسترسی عمومی تعریف کردیم برای این که از داخل انجین آبجکت هدف را به آن نسبت دهیم ؛ نوع آن را Transform گذاشتیم چون مختصات گیم آبجکت را نیاز داریم.

 

 

در خط 17 با استفاده از کامپوننت transform و متد LookAt متغیری که تعریف کردیم را به عنوان پارامتر ورودی این متد فرستادیم؛ وظیفه این متد چرخاندن جهت z گیم آبجکت به سمت هدف می باشد.

در خط 18 با استفاده از کلاس دیباگ و متد DrawLine خطی قرمز ترسیم کردیم تا این تغییر جهت به سمت گیم ابجکت هدف واضح تر باشد ، پارامتر اول این متد شروع خط را مشخص می کند پارامتر دوم جهت و اندازه آن را با ضرب کردن در 5 مشخص کردیم در پارامتر سوم هم رنگ خط را قرمز کردیم.

حال اسکریپت را به مکعب سبز نسبت دادیم و اسم آن را در هایرارکی Enemy گذاشته و اسم Cylinder را به Npc تغییر دادیم حال با حرکت دادن Npc  از درون صحنه مشاهده می کنید که جهت نگاه مکعب سبز هم تغییر می کند.

اما بعد از اجرا مشاهده می کنید که این چرخش خیلی سریع و غیر طبیعی انجام می گیرد که می توانید با استفاده از متد Slerp و کلاس Quaternion چرخش های طبیعی تر ایجاد کنید که در دوره دوم آموزش ساخت بازی شوتر اول شخص کاملا به این موضوعات پرداخته ام.

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

 

۰ ۰ ۱۲ دیدگاه

دیدگاه‌ها (۱۲)

سلام
ممنون از آموزش خوبتون
اما تو آموزش این رو درست نوشتید؟Slerp
منظورتون lerp نیست؟!

پاسخ:

۲۱ تیر ۹۵، ۰۷:۳۱
سلام
خواهش می کنم
بله با استفاده از کلاس Quaternion.Slerp می شود چرخش نرمی ایجاد کرد که زمانش در دست خوده ماست
البته چرخش رو باید با Quaternion.LookRotation ایجاد کنید.
متد Lerp هم تقریبا همین کارایی رو داره به عنوان مثال می تونید برای حرکت نرم بین دو پوزیشن مختلف از این دستور استفاده کنید
( متغیر سرعت حرکت * Time.deltaTime , پوزیشن دوم , پوزیشن اول)Vector3.Lerp


امید عسکراوی

۲۳ تیر ۹۵ ، ۱۳:۳۸
سلام خدمت شما اقای رجب زاده و ممنون به خاطر این اموزش زیبا

ولی اقای رجب زاده من یک درخواست کوچک داشتم میخواستم درخواست کنم اگه  میشه اموزش زمانی که ما مثلا در بازی fps  زوم میکنیم یا fire2 رو میزنیم مثلا دوربین بیاد و به دشمنای جلوی ها اشاره  کند یعنی بعد از کشتن دشمن اول و بعد دوباره خارج کردن و زدن حالت زوم به دشمن بعدی که در جلوی ما است اشاره کند یعنی روی دشمن قرار بگیرد  و به صورت اتوماتیک روی دشمن قرار بگیره حالتی مثل بازی بتلفید  یا مدرن کمبت
ممنون میشم یک اموزش در این زمینه قرار بدید

پاسخ:

۲۳ تیر ۹۵، ۱۳:۴۹
سلام دوست عزیز
من تا حالا روی این موضوع کار نکردم
ولی چیزی نیست که نشه پیادش کرد
چند تا پروژه آموزشی دارم به امیده خدا فرصت شد و عمری بود این موردی که گفتین رو آموزش میدم.

حتما در خبرنامه وبلاگ عضو شید تا از مزایای اون بهره ببرید.
در پناه خدا



امید عسکراوی

۲۳ تیر ۹۵ ، ۱۸:۰۰
ممنون اقای رجب زاده از پاسخی که دادید
 
مشتاقانه منتظر هستم تا این اموزش رو  در نزدیک ترین زمان ممکمن قرار بدید
ممنون از توجه شما
با تشکر  یاعلی

پاسخ:

۲۳ تیر ۹۵، ۱۹:۱۰
سلام
خواهش می کنم دوست عزیز


امید عسکراوی

۲۷ تیر ۹۵ ، ۱۲:۵۴
سلام اقای رجب زاده میخواستم بگم من چند روز پیش در مورد یه اموزش ازتون کمک خواستم که در مورد زوم کردن بود  میخواستم بدونم ایا امکانش هست اموزش رو قرار بدید یا نه
ممنون
یاعلی

پاسخ:

۲۷ تیر ۹۵، ۱۲:۵۹
سلام دوست خوب
شما زوم کردن رو می خواستید یا تغییر جهت دوربین با زدن کلیک راست به روی دشمنان
اگر زوم کردن رو فقط می خواین تا چند روز دیگه یک اموزش متنی میزارم کاره زیادی نداره
من آموزشی که براتون مد نظر دارم با هر بار زدن کلیک راست روی دشمن زوم کنه
یک پروژه جاری به اتمام رسیده در حال آپلود هست تمام بشه 
روی آموزش شما کار می کنم
موفق باشی



امید عسکراوی

۲۸ تیر ۹۵ ، ۰۱:۲۲
سلام اقای رجب زاده ممنون از پاسخی که دادید
 1_من اموزشی رو میخواستم که  مثلا وقتی دشمن جلوی ما با کمی فاصله منظورم از کمی خیلی کم  نیست یعنی ده متری یا کمتر  مثلا هر بار که زوم بکنم اگه اسلحه زمش نزدیک دشمن بود بیا و به  روی دشمن  بیوفته و بعد از کشتن دشمن اگه دشمن بعدی که مثلا دورتر از دشمن قبله اگه سر اسلحه رو کمی به طرفش بکشم اسلحه با زدن زوم بیاد و به روی دشمن  دوم بیوفته
ممنون

2_اقای رجب زاده میشه یه توضیحی هم در مورد خروجی گرفتن بدید من یه مرحله تستی ساختم  مرحله هیچی نداره غیر از چند cube  و چند تا زمبی همین ولی وقتی ازش خروجی میگیرم و روی گوشیم نصبش میکنم وقتی توی مرحله هستم تصویر کمی کند میشه یا اسلحه وقتی شلیک میکنم تتکون نمیخوره میشه توضیح بدید باید چیکار بکنم
ممنون
یا علی

پاسخ:

۲۸ تیر ۹۵، ۱۰:۴۵
سلام
آموزش شما درست میشه ولی خوب به دلیل این که اموزش های دیگه در نوبت هستن با تاخیر در وبلاگ قرار می گیره

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

موفق باشی



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

پاسخ:

۲۲ مرداد ۹۵، ۱۳:۳۴
خواهش می کنم


 سلام
خیلی ممنونم از اموزش هاتون 
یه سوال مهم پیش اومده برام اگه بخوایم ''فقط ''در محور rotation.x به سمت transform مورد نظر چرخش کنیم باید چی کار کرد؟
خیلی ممنونم اگه پاسخ بدید

پاسخ:

۱۰ شهریور ۹۵، ۲۱:۳۳
سلام دوست خوب در دروه جامع برنامه نویسی سی شارپ این موضوع رو آموزش دادم
در هفته آینده منتشر میشه


سلام
لطفا اگه میشه کد رو به من بدید به خدا خیلی لازم دارمش ،پروژه رو باید تا اخر ماه تحویل بدم مشکل من فقط همین یه خط کد هست اگه تا هفته دیگه صبر کنم وقت زیادی رو از دست میدم 
خیلی ممنون میشم اگه الان اون رو برام تایپ کنید

خیلی ممنون از رسیدگی سریع به سوالات
خدانگهدار

پاسخ:

۱۱ شهریور ۹۵، ۱۲:۳۴
سلام دوست خوب 

موفق باشی


سلام
خیلی ممنونم از شما به دلیل رسیدگی به سوالات ما
شاد باشید :)

پاسخ:

۱۱ شهریور ۹۵، ۱۵:۱۳
سلام 
خواهش می کنم
مچکر 

سلام آقای رجب زاده از این آموزش میشه برای بازیه های دوبعدی حول محور X استفاده کرد؟

پاسخ:

۱۶ خرداد ۹۶، ۱۹:۱۰
سلام میلاد عزیز
قطعا بسته به نوع بازی تون می تونید استفاده کنید
موفق باشید
کانال تلگرام : GameDevUnity@

سلام آقای زجب زاده ایمیلتون رو میتونید بدید به من بهتون پیام بدم


سلام

ببخشید سوال داشتم . ممنون میشم راهنماییم کنید. 

1-من می خواستم بازی خودم رو انلاین کنم اما نمیدونم چجوری؟! می خواهم گیمر ها دو به دو با یکدیگر مسابقه دهند. لطفا راهنمایی کنید.

2- می خواستم بازی بسازم اما بعضی جاها به مشکل بر می خورم. شما میتونید راهنماییم کنید؟ 


ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی

GameDeveloper

تمام آموزش های جدید در تلگرام آپلود شده اند https://t.me/GameDevUnity

آخرین مطلب
آخرین نظرات