好的,我到目前为止:
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);
}
}
我的相机有一个父母,我根据鼠标位置旋转。唯一的问题是我只能用鼠标滑动来旋转对象。如果我只是单击对象旁边的,如何根据鼠标位置旋转我的相机附加的对象。提前谢谢!
答案 0 :(得分:2)
键盘和操纵杆输入的值将在-1 ... 1范围内。 如果轴设置为delta鼠标移动,则鼠标delta为 乘以轴灵敏度,范围不是-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);
}
也许有些语法错误,我不会检查它们。