首页 > 解决方案 > unity camera 通过鼠标输入旋转,如何旋转移动到默认位置?

问题描述

相机通过鼠标输入旋转,如何旋转移动到默认位置?

public class CameraOrbit : MonoBehaviour
{
    public float turnSpeed = 1.0f;
    public Transform player;
    
    private Vector3 offset;
    
    private void Start()
    {
        offset = new Vector3(0, 2.5f, -5);
    }
    
    private void LateUpdate()
    {
        if (Input.GetMouseButton(0))
        {
            offset = Quaternion.AngleAxis(Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * offset;
            transform.localPosition = offset;
            transform.LookAt(player.position);
        }
    }
}

这种东西直接移动到位,我想把它弄平。

public void RevertCamera()
{
    offset = new Vector3(0, 2.5f, -5);
    transform.localPosition = offset;
    transform.LookAt(player.position);
}

我已经尝试了多种变体,但它们似乎都不起作用。

标签: c#unity3d

解决方案


最简单的方法是使用相机的变换RotateAround(...)方法:

void LateUpdate 
{
    if(Input.GetMouseDown(0))
    {
        float delta = Input.GetAxis("Mouse X") * turnSpeed;
        transform.RotateAround(player.position, Vector3.up, delta);
    }
}

(取自:https ://docs.unity3d.com/ScriptReference/Transform.RotateAround.html )

建议:如果我想控制聚焦在某个目标上的摄像机移动,我通常会设置一个摄像机装置。尽管对于一个简单的 RotateAround 调用,这可能是过度设计的。


推荐阅读