原創文章如需轉載請注明:轉載自 脫莫柔Unity3D學習之旅 QQ群:【119706192】本文鏈接地址: 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); }