且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

根据鼠标位置围绕对象Unity3D旋转相机

更新时间:2022-12-25 10:52:37

对于键盘和操纵杆输入,该值将在-1 ... 1范围内. 如果将轴设置为鼠标移动的增量,则鼠标的增量为 乘以轴灵敏度,范围不为-1 ... 1. 统一文档

The value will be in the range -1...1 for keyboard and joystick input. If the axis is setup to be delta mouse movement, the mouse delta is multiplied by the axis sensitivity and the range is not -1...1. Unity Document

注意:此链接很有用,请检查它.

Note: This link is usefull please check it.

所以您需要像这样更改代码.

So you need to change your code like this.

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);
}

如果有问题,您可以这样做

if there are problem you can do like this

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);
}

也许是语法错误,我不检查它们.

Maybe some syntax errors, i don't check them.