这是我在这个社区的第一篇文章。我四处搜索了一些内容来帮助我解决我的问题,我发现了一些可能对我有帮助的东西,但我只是想知道是否可以使用鼠标滚动输入沿固定路径移动相机?
我在想的可能是使用 cinemachine 的轨道和推车功能,并且可能随着每次向上/向下滚动增量移动到一个路点,但因为我仍然是一个 c# 菜鸟,我不知道我该怎么做。
这里是我想做的那种运动的参考:https://www.sprite.com/zerolimits
非常感谢任何帮助!谢谢:)
正如你自己所说。在
Cinemachine
中创建一个 Dolly Cart 并在虚拟相机的 Follow
部分中选择 Cart。
然后只需将位置更改代码连接到手推车。在下面的部分中,我添加了一个仅适用于 clamp 的简单代码和一个捕获相机噪声并使其更平滑的更高级代码。我希望它能解决问题。
[SerializeField] private CinemachineDollyCart _dollyCart;
private float y;
private void Update()
{
y += Input.GetAxis("Mouse ScrollWheel");
_dollyCart.m_Position = Mathf.Clamp01(y); // In position units of Normalized
}
public class MouseScrollTracker : MonoBehaviour
{
[SerializeField] private CinemachineDollyCart _dollyCart;
private float y;
[Range(0, 10)]
[SerializeField] private float sensitivity = 1;
[Range(1, 30)]
[SerializeField] private float sharpness = 7;
private void Update()
{
// In Position units of Distance
y += Input.GetAxis("Mouse ScrollWheel") * sensitivity;
_dollyCart.m_Position = Mathf.Clamp(
Mathf.Lerp(_dollyCart.m_Position, y,
1-Mathf.Exp(-sharpness*Time.unscaledDeltaTime)), 0, _dollyCart.m_Path.PathLength);
}
}