2015-02-08 116 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); 
} 

也许有些语法错误,我不检查它们。