در ابتدا ، یک اسکریپت جدید به شخصیت خود اضافه کنید. نام آن را اسکریپت PlayerMovement بگذارید. ابتدا به مرجع از Player Player Script به Character Controller نیاز داریم. به فیلمنامه گفته می شود که شخصیت را حرکت دهد.
در ابتدا یک متغیر ایجاد می کنیم:
کنترلر عمومی CharacterController2D ؛
سپس می توانید کنترلر کاراکتر را به یک فضای آزاد بکشید.
جهت و سرعت حرکت باید برای حرکت تعریف شود. برای این کار به ورودی پخش کننده نیاز دارید:
کلید پیکان چپ یا A = 1
کلید جهت دار راست یا D = -1
در مورد کنترلر نیز همینطور است.
horizontalMove = Input.GetAxisRaw ("افقی")؛
منطقه به روز رسانی ورودی پخش کننده را سازماندهی می کند.
FixedUpdate برای فیزیک استفاده می شود. این عملکرد مورد نیاز است.
متغیر دیگری ایجاد کنید:
float horizontalMove = 0f؛
FixedUpdate کاراکتر را جابجا می کند.
void FixedUpdate()
{
کنترل کننده حرکت (horizontalMove ، false ، false) ؛
}
غلط اول نشان دهنده این است که بازیکن نباید خم شود و دومی نشان می دهد که نباید پرش کند.
یک تعریف برای Move در اسکریپت Player Controller مورد نیاز است:
حرکت خلاء عمومی (حرکت شناور ، خم شدن بول ، پرش بول)
{}
به عنوان متغیر بعدی شما نیاز دارید:
شناور عمومی runSpeed = 40f؛
ورودی پخش کننده در سرعت اجرا ضرب می شود:
horizontalMove = Input.GetAxisRaw ("افقی") * runSpeed؛
اگر بازیکن به چپ و راست حرکت کند ، حرکت -40 و 40 خواهد بود.
این حرکت همچنین در Time.fixedDeltaTime ضرب می شود.
Time.fixedDeltaTime زمان فراخوانی آخرین تابع FixedUpdate است. این نشان می دهد که حرکت بدون در نظر گرفتن تعداد فراخوانی تابع به همان میزان انجام می شود. بنابراین ، سرعت شخصیت یکسان است ، مهم نیست چه سیستم یا پلتفرمی باشد.
اگر پیاده بیفتد ، می تواند کمی به زمین منتقل شود.
به همین دلیل است که در Rigidbody2D تشخیص برخورد از گسسته به پیوسته تغییر می کند.
برای پرش ، بررسی می شود که آیا ما کلید پرش را فشار می دهیم یا نه:
if (input.GetButtonDown ("پرش"))
{
پرش = درست ؛
}
این نیز باید در تابع FixedUpdate انجام شود. اطلاعات با یک متغیر بولی منتقل می شوند:
bool jump = false؛
متغیر پرش نیز تحت FixedUpdate اضافه می شود.
با فشردن دکمه پرش ، اسکریپت PlayerMovement به کنترلری هدایت می شود که می خواهیم پرش کنیم. پس از آن دوباره خواهد بود
پرش = غلط ؛
این باید تعریف شود زیرا ما نمی خواهیم برای همیشه از پیش برویم.
مشکل دیگر این است که وقتی شخصیت سعی می کند روی یک سکو بپرد ، در آنجا گیر می کند. سپس شخصیت باید به سمت پایین بلغزد و روی این مورد بیفتد. برای این کار به مواد فیزیکی نیاز است. در قسمت Project ، روی Create–> PhysicsMaterial2D کلیک راست کنید
نام آن را لغزنده بگذارید. Friction and Bounciness را روی 0 تنظیم کنید. PhysicsMaterial را بردارید و آن را از روی BoxCollider بازیکن روی مواد بکشید.
اگر چندین برخورد کننده را برای قهرمان داستان تعریف کرده اید ، می توانید مواد فیزیکی را به سایر برخورد کنندگان نیز اختصاص دهید.
طرح صفحه کلید از طریق Unity InputManager تعریف می شود. این را می توانید در قسمت تنظیمات پروژه پیدا کنید.
روی دکمه پرش راست کلیک کرده و Duplicate Array Element را انتخاب کنید. نام آن را "Crouch" بگذارید.
اگر بازیکنان می خواهند با کلیدهای جهت نما بازی کنند ، کافی است یک دکمه جایگزین تعریف کنید.
مراحل پرش تا دراز کشیدن را تکرار کنید:
هنگامی که دکمه خم شدن آزاد می شود ، شخصیت نیز باید از خم شدن دست بکشد. بنابراین کاملاً شبیه پریدن عمل نمی کند. اگر بازیکنان می خواهند با کلیدهای جهت نما بازی کنند ، کافی است یک دکمه جایگزین تعریف کنید.
موارد زیر را در عملکرد به روز رسانی اضافه کنید:
else if (Input.GetButtonUp ("خم شدن"))
{
crouch = false؛
}
برای اینکه بخشهای مربوطه در کنترلر کاراکتر ظاهر شوند ، باید آنها را از خصوصی به عمومی تغییر دهید:
Ziehe den برخورد, der deaktiviert werden soll in das entsprechende Feld. Befindet sich über dir eine „Decke“ verlangsamt sich dein Charakter, wenn du die Ducken-Taste drückst.