Unity3D 控制物體移動、旋轉、縮放


原創文章如需轉載請注明:轉載自 脫莫柔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);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM