(UNITY 3D):使用鼠标滚动输入沿轨道/预定义路径移动相机

问题描述 投票:0回答:1

这是我在这个社区的第一篇文章。我四处搜索了一些内容来帮助我解决我的问题,我发现了一些可能对我有帮助的东西,但我只是想知道是否可以使用鼠标滚动输入沿固定路径移动相机?

我在想的可能是使用 cinemachine 的轨道和推车功能,并且可能随着每次向上/向下滚动增量移动到一个路点,但因为我仍然是一个 c# 菜鸟,我不知道我该怎么做。

这里是我想做的那种运动的参考:https://www.sprite.com/zerolimits

非常感谢任何帮助!谢谢:)

unity3d camera mousewheel cinemachine
1个回答
0
投票

正如你自己所说。在

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.