خوب به نظرم یکی از جالب ترین موارد توی Unity اینه که میتونیم با ورودی موس و کیبورد یه بازی بسازیم.
حالا اولین مرحله گرفتن ورودی هاست: به طور مثال با arrow های روی کیبورد یا W,A,S,D برای بالا و پایین کردن و چپ و راست کردن آبجت هایی که ساختیم.
حالا توی همین قسمت باید بگم که یه قسمتی توی برنامه هست به اسم input manager که توی قسمت edit و بعد project manager که اونجا میتونیم تعیین کنیم که مثلا ورودی برای محور x , y , z و موارد دیگه رو تعیین میکنیم.
[SerializeField] float yValue = 0.02f;
[SerializeField] float zValue = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float xValue = Input.GetAxis("Horizontal");
transform.Translate(xValue,yValue,zValue)
}
خوب حالا بیایم برسی کنیم که این کد چی داره میگه :
خوب اونجایی که از SerializeField استفاده کردیم یعنی این که این پرامتر ها رو میتونیم داخل inspector نرم افزار تغییرشون بدیم و مقدارشون رو هم ببینیم.
قسمت update میاد و در هر فریم اجرا میشه ولی قسمت start فقط یکبار اونم هم در شروع بازی اجرا میشه و تمام.
حالا توی خط بعدی اومدیم مقدار xValue رو از ورودی های کیبورد گرفتیم به این شکل گرفتیم:
Input.GetAxis
حالا برای کدوم محور رو میخوایم بگیریم ، افقی :
Horizontal
و بعد اومدیم از
transform.Translate(xValue,yValue,zValue)
استفاده کردیم، جالب اینجاست که من قبلا JavaScript کار کرده بودم و مشابه این مفاهیم رو توی قسمت ساخت انیمیشن و مفاهیم front-end خونده بودم و باهاش کار کرده بودم، و اینجا خیلی جالب و جذاب شد موضوع برام
از transform.Translate برای تغییر آبجکت در محور های X,Y,Z استفاده میکنیم
و اگر دقت کنید ما قبلا دو قسمت Y , Z رو مقدار دهی ثابت کرده بودیم و برای قسمت x اومدیم و از کیبورد مقادیر رو گرفتیم.