2015-02-08 190 views
1

好,所以我已經走到這一步:旋轉攝像頭Unity3D

public class CameraScript : MonoBehaviour { 

public void RotateCamera() 
    { 
     float x = 5 * Input.GetAxis("Mouse X"); 
     float y = 5 * -Input.GetAxis("Mouse Y"); 
     Camera.mainCamera.transform.parent.transform.Rotate (y,x,0); 
    } 

} 

我的相機,我轉動的基礎上我的鼠標位置的父。唯一的問題是,我只能用鼠標輕掃旋轉對象。我如何根據鼠標位置旋轉我的相機連接的對象,如果我只是單擊對象旁邊。提前致謝!

回答

2

鍵盤和遊戲杆輸入的值將在-1 ... 1的範圍內。 如果軸設置爲增量鼠標移動,則鼠標增量爲 乘以軸靈敏度,範圍不是-1 ... 1。 Unity Document

注意:這個link是有用的請檢查它。

所以你需要像這樣改變你的代碼。

public void RotateCamera() 
{ 
    Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // Gets mouse position to Unity World coordinate system 
    Camera.mainCamera.transform.parent.transform.Rotate (mousePosition); 
} 

,如果有問題,你可以像這樣

public void RotateCamera() 
{ 
    Vector3 position = new Vector3(Input.mousePosition.x, Input.mousePosition.y,0); 
    Vector3 mousePosition = Camera.main.ScreenToWorldPoint(position); // Gets mouse position to Unity World coordinate system 
    Camera.mainCamera.transform.parent.transform.Rotate (mousePosition); 
} 

多一個選擇是rotateTowards

public float speed=10; //any value > 0 
public void RotateCamera() 
{ 
    Vector3 targetDir = Camera.main.ScreenToWorldPoint(Input.mousePosition) - Camera.mainCamera.transform.parent.transform.position; 
    float step = speed * Time.deltaTime; 
    Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0F); 
    Camera.mainCamera.transform.parent.transform.rotation = Quaternion.LookRotation(newDir); 
} 

也許有些語法錯誤,我不檢查它們。