团结,跟随滚动的球并能够围绕它旋转

本文关键字:旋转 跟随 滚动 团结 | 更新日期: 2023-09-27 18:37:11

我希望能够跟随一个滚动的球(我可以自己做),我希望能够在按住右键单击的同时围绕球旋转(我也可以自己做),但是当我尝试组合这两个时,我得到了不需要的结果。

在下面的代码中,您可以看到,如果我只想围绕球旋转,我的"RotateAround"可以解决这个问题,如果我只是想跟随球,无论它去哪里,相机的距离和角度都相同,那么我的_offset会处理这个问题。 当我尝试将 2 组合在一起让它跟随球并能够旋转相机(通过右键单击)时,相机只是停止跟随球。

我想既然你可以用_offset本身跟随球,我在 Unity 教程中发现,当使用旋转更改位置时,_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;
    }
}