標籤:
轉載自 脫莫柔Unity3D學習之旅 原文地址: Unity3D 控制物體移動、旋轉、縮放
Transform基本移動函數:
1.指定方向移動:
//移動速度 float TranslateSpeed = 10f;//Vector3.forward 表示“向前”transform.Translate(Vector3.forward *TranslateSpeed);
2.全方向移動:
//x軸移動速度移動速度 float xSpeed = -5f;//z軸移動速度移動速度 float zSpeed = 10f;//向x軸移動xSpeed,同時想z軸移動zSpeed,y軸不動 transform.Translate(xSpeed,0,zSpeed);
3.重設座標:
//x軸座標 float xPostion = -5f;//z軸座標 float zPostion = 10f;//直接將當前物體移動到x軸為xPostion,y軸為0,z軸為zPostion的三維空間位置。transform.position = Vector3(xPostion,0,zPostion);
輸入控制:
1.輸入指定按鍵:
//按下鍵盤“上方向鍵”if(Input.GetKey ("up")) print("Up!");//按下鍵盤“W鍵”if(Input.GetKey(KeyCode.W);) print("W!");
2.滑鼠控制
//按下滑鼠左鍵(0對應左鍵 , 1對應右鍵 , 2對應中鍵) if(Input.GetMouseButton(0)) print("Mouse Down!");Input.GetAxis("Mouse X");//滑鼠橫向增量(橫向移動) Input.GetAxis("Mouse Y");//滑鼠縱向增量(縱向移動)
3.擷取軸:
//水平軸/垂直軸 (控制器和鍵盤輸入時此值範圍在-1到1之間)Input.GetAxis("Horizontal");//橫向 Input.GetAxis ("Vertical");//縱向
按住滑鼠拖動物體旋轉和自訂角度旋轉物體:
float speed = 100.0f;float x;float z;void Update () { if(Input.GetMouseButton(0)){//滑鼠按著左鍵移動 y = Input.GetAxis("Mouse X") * Time.deltaTime * speed; x = Input.GetAxis("Mouse Y") * Time.deltaTime * speed; }else{ x = y = 0 ; } //旋轉角度(增加) transform.Rotate(new Vector3(x,y,0)); /**---------------其它旋轉方式----------------**/ //transform.Rotate(Vector3.up *Time.deltaTime * speed);//繞Y軸 旋轉 //用於平滑旋轉至自訂目標 pinghuaxuanzhuan();}//平滑旋轉至自訂角度 void OnGUI(){ if(GUI.Button(Rect(Screen.width - 110,10,100,50),"set Rotation")){ //自訂角度 targetRotation = Quaternion.Euler(45.0f,45.0f,45.0f); // 直接設定旋轉角度 //transform.rotation = targetRotation; // 平滑旋轉至目標角度 iszhuan = true; }}bool iszhuan= false;Quaternion targetRotation;void pinghuaxuanzhuan(){ if(iszhuan){ transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 3); }}
鍵盤控制物體縮放:
float speed = 5.0f;float x;float z;void Update () { x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; //水平 z = Input.GetAxis("Vertical") * Time.deltaTime * speed; //垂直//"Fire1","Fine2","Fine3"映射到Ctrl,Alt,Cmd鍵和滑鼠的三鍵或腰杆按鈕。新的輸入軸可以在Input Manager中添加。 transform.localScale += new Vector3(x, 0, z); /**---------------重新設定角度(一步到位)----------------**/ //transform.localScale = new Vector3(x, 0, z);}
Unity3D 控制物體移動、旋轉、縮放