Unity,跟随一个滚动的球并能够围绕它旋转

Unity, Follow a rolling ball and be able to rotate around it

我希望能够跟随滚动的球(我可以自己完成)并且我希望能够在按住右键的同时围绕球旋转(我也可以自己完成)但是当我尝试将这 2 个结合起来,我得到了不需要的结果。

在下面的代码中,您可以看到,如果我只是想围绕球旋转,我的 "RotateAround" 可以解决这个问题,如果我只是想随着相机的移动而跟随球相同的距离和角度,然后我的 _offset 会处理这个问题。当我尝试将 2 结合起来使其跟随球并能够同时旋转相机(通过右键单击)时,相机只是停止跟随球。

我认为,因为您可以单独使用 _offset 跟随球,我在 Unity 教程中发现,当使用 RotateAround 更改位置时,_offset 会负责将相机保持在新位置。顺便说一句,这个脚本在我的相机游戏对象上。

void Start()
{
    _offset = CamFollowStartSpot.position - Ball.transform.position;
}

void LateUpdate()
{
    if (Input.GetMouseButton(1))
    {
        _transform.RotateAround(Ball.transform.position, Vector3.up, 20 * Time.deltaTime);
        _offset = _transform.position - Ball.transform.position;
    }
    _transform.position = Ball.transform.position + _offset;
}

我发现哪里不对了,就是我在最后设置位置的时候。下面的代码需要在 IF 语句之前调用以检查我的鼠标点击输入。

_transform.position = Ball.transform.position + _offset;

正确的方法在下面的代码中。

void LateUpdate()
{
    _transform.position = Ball.transform.position + _offset;
    if (Input.GetMouseButton(1))
    {
        _transform.RotateAround(Ball.transform.position, Vector3.up, 20 * Time.deltaTime);
        _offset = _transform.position - Ball.transform.position;
    }
}