Unity3D讓攝像機隨player移動


代碼很簡單直接看:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {

    public GameObject player;
    private Vector3 offset;
	// Use this for initialization
	void Start () {
        offset = transform.position;
	}
	
	// Update is called once per frame
	void Update () {
        transform.position = player.transform.position + offset;
	}
}

把需要監聽的GameObject添加到變量player中,就ok啦

Prefab(預製件):包含一個或一組物件的模板或藍本,當修改其中一個物體的屬性可以修改其他所有的物體屬性。



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);
}
複製代碼




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章