Unity角色移動~ Transform 常用屬性&常用方法
Transform類別
每一個在場景中的物件都有Transform,負責存取物件的座標位置、旋轉、縮放。
常用屬性:
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);
}
}
留言
張貼留言