Unity角色移動~ Transform 常用屬性&常用方法

Transform類別

每一個在場景中的物件都有Transform,負責存取物件的座標位置、旋轉、縮放。

2.png 


常用屬性:

transform.Position = new Vector3(0, 0, 0);  //以世界為中心的座標
transform.localPosition = new Vector3(0, 0, 0); //以父物件為中心的座標


常用方法:

transform.Translate(Vector3.forward * Time.deltaTime);//位移方法
transform.Rotate(xAngle, yAngle, zAngle, Space.Self); //以自身為軸心旋轉
transform.Rotate(xAngle, yAngle, zAngle, Space.World);//軸心取決於世界(scene)

※Time.deltaTime--幀數之間的時差。(此部分參閱unity時間)


利用transform.Translate移動(使用位移方法)

Vector2使用方式:

private void movement()//方法
{   //採用直接改變物件座標的方式
	//一、向右走
     if (Input.GetKey(KeyCode.D))//輸入.來自鍵盤(“d”)
     {
         this.gameObject.transform.Translate(new Vector2(5, 0) );
     }  //此類別.這個物件.座標系統.位移(delta向量)

	//二、向左走;依照一、的作法會發現物件飆很快,可以乘上Time.deltaTime來延遲。
	else if (Input.GetKey(KeyCode.A))
     {
        this.gameObject.transform.Translate(new Vector2(-5, 0) * Time.deltaTime);
     }  
	//向上走 ,可以直接使用Vector的屬性Vector2.up,就不需要new一個變數
     else if (Input.GetKey(KeyCode.W))
     {
        this.gameObject.transform.Translate(Vector2.up * Time.deltaTime);
     }  
	//向下走
	else if (Input.GetKey(KeyCode.S))
     {
        this.gameObject.transform.Translate(Vector2.down * Time.deltaTime);
     }  

  }


利用transform.position(改變物件座標)

Vector3使用方式:

public float speed;    //設公開的數度變數,可在unity中設值調整

private void movement()//方法
{   //採用直接改變物件座標的方式
	//向右走
     if (Input.GetKey(KeyCode.D))//輸入.來自鍵盤(“d”)
     {
        this.gameObject.transform.position += new Vector3(speed, 0, 0);
     }  //此類別.這個物件.座標系統.位置(為一個向量值x,y,z)+=這個向量

	//向左走
	else if (Input.GetKey(KeyCode.A))
     {
        this.gameObject.transform.position -= new Vector3(speed, 0, 0);
     }  
	//向上走
     else if (Input.GetKey(KeyCode.W))
     {
        this.gameObject.transform.position += new Vector3(0, speed, 0);
     }  
	//向下走
	else if (Input.GetKey(KeyCode.S))
     {
        this.gameObject.transform.position -= new Vector3( 0,speed,  0);
     }  

  }







留言

這個網誌中的熱門文章

🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題

🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)