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

时间:2016-03-03 06:31:01

标签: c# unity3d camera rotation

我希望能够跟随一个滚球(我可以单独做)并且我希望能够在保持右击的同时围绕球旋转(我也可以自己做)但是当我尝试时结合这两个我得到了不想要的结果。

在下面的代码中你可以看到,如果我只是想围绕球旋转我的" RotateAround"照顾这没问题,如果我只是想跟随球,无论它在哪里与相机距离和角度相同,那么我的_offset负责这一点。当我尝试将2组合起来让它跟随球并且能够旋转相机(右键单击)同时相机停止跟随球。

我认为既然你可以用_offset跟随球,我在Unity教程中发现,当使用RotateAround改变位置时_offset将把相机保持在新位置。顺便说一句,这个脚本在我的Camera GameObject上。

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

1 个答案:

答案 0 :(得分:-1)

我弄清楚出了什么问题,就在我最后设定位置的时候。需要在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;
    }
}