حرکت آبجکت در دو بعدی به سمت راست (افقی)
منظور از آبجکت یعنی میتونه هرچیزی باشه تیر زمان شلیک شدن یا پلیر و….
که با دو دستور transform.position و transform.translate در این پست به شما عزیزان توضیح داده میشود.
دلیل استفاده از vector2 بخاطر دو بعدی بودن خروجی مون هست.
حرکت با transform.position
مثال
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { Vector2 HarekateRast; void Start () { } void Update() { HarekateRast = transform.position; HarekateRast.x += 1f; transform.position = HarekateRast; } }
این کد رو در یک اسکریپت بنویسید و به یک آبجکت در محیط یونیتی بچسبانید.
مانند عکس زیر
حرکت آبجکت در دو بعدی به سمت چپ (افقی)
در این حالت کافیست بجای 1f در کد بالا 1f- قرار بدهیم ویا =+ را =- قرار دهیم. این یعنی ما از موتور بازی ساز میخواهیم که در محور ایکس به سمت منفی ها حرکت کند.
HarekateRast.x += -1f;
حرکت آبجکت در دو بعدی به سمت بالا(یا همان حرکت در محور y)
در این بخش کافی هست فقط بجای x ما y قرار دهیم .
HarekateRast.y += 1f;
حرکت آبجکت در دو بعدی به سمت پایین (یا همان حرکت در محور y)
در این بخش کافی هست فقط بجای 1f یک منفی کنار 1 یا مساوی قرار دهیم .
HarekateRast.y -= 1f;
برای دیدن بقیه آموزشهای یونیتی میتوانید به بخش آموزش یونیتی ویا برای دیدن اموزش یونیتی دو بعدی به لینک های مذکور مراجعه کنید.
حرکت آبجکت با transform.Translate
روش دیگر حرکت ابجکت با transform.Translate انجام میگردد.
نکته : T مربوط به Translate حتما با حرف بزرگ نوشته شود.
این دستور سه ورودی فلوت float در محورهای xyz به شکل زیر نیاز دارد.
transform.Translate(float x,float y,float z);
که در مثال زیر ما حرکت در محور ایکس رو مثال میزنیم یعنی به محور ایکس عدد میدیم و دو محور دیگه رو صفر میزاریم.
public class NewBehaviourScript : MonoBehaviour { float speed = 5f; void Start () { } void Update() { transform.Translate(speed,0,0); } }
در مثال بالا ابجکت با سرعت زیاد به سمت مثبت ایکس ها حرکت میکند وچنانچه بخواهید به محور های دیگر حرکت کند میتوانید به بجای صفر یک مقدار دلخواه بدهید.
اگر میخواهید حرکت ابجکت را با چشم ببینید میتوانید عدد speed رو ضربدر Time.deltatime کنید.
اگر هم میخواهید به سمت منفی های محور ایکس یا وای حرکت کنید کافی هست پشت speed یک منفی بگذارید.(speed-)
مثال
transform.Translate(speed*Time.deltaTime,0,0);
حرکت پلیر به سمت راست چپ بالا و پائین
مثال
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerTest : MonoBehaviour { float speed = 5f; void Start() { } void Update() { float x = Input.GetAxis("Horizontal") * speed * Time.deltaTime; float y = Input.GetAxis("Vertical") * speed * Time.deltaTime; transform.Translate(x, y, 0); } }