团结,跟随滚动的球并能够围绕它旋转
本文关键字:旋转 跟随 滚动 团结 | 更新日期: 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;
}
}