【问题标题】:How to clamp Input.mouseScrollDelta如何钳制 Input.mouseScrollDelta
【发布时间】:2021-08-11 05:37:54
【问题描述】:

我正在尝试使用鼠标按钮制作简单的滚动系统,并将相机的 Y 值限制在 10 到 100 之间,但每次它总是让它飞起来,除了我做两个这样的 if 时:

            if (camera.transform.position.y < 10)
            {
                camera.transform.position += new Vector3(0, 1, 0);
            }

            if (camera.transform.position.y > 100)
            {
                camera.transform.position += new Vector3(0, -1, 0);
            }

可行,但我想使用 Clamps。目前我只有camera.transform.position += new Vector3(0, Mathf.Clamp(-Input.mouseScrollDelta.y, 10, 100), 0);

但它又一次让它飞起来。我已经尝试了不同的组合,但一切都一样,我不知道为什么......任何帮助都是不胜感激的

我尝试过的另一件事最终做同样的事情是

camera.transform.position += new Vector3(0, -Input.mouseScrollDelta, 0)

Camera.transform.position += new Vector3(0, Mathf.Clamp(camera.transform.position, 10, 100));

【问题讨论】:

    标签: c# unity3d position


    【解决方案1】:

    你可以用这个:

    camera.transform.position += Vector3.up * -Input.mouseScrollDelta.y;
    camera.transform.position = new Vector3(camera.transform.position.x, Mathf.Clamp(camera.transform.position.y, 10, 100), camera.transform.position.z);
    

    Vector3 camPos = camera.transform.position;
    camPos.y += -Input.mouseScrollDelta.y * speed;
    camPos.y = Mathf.Clamp(camPos.y, 10, 100);
    camera.transform.position = camPos;
    

    【讨论】:

    • 它工作了,但现在我的其他控件不起作用,因为 Vector3 将 x 和 z 设置为 0,而我需要它来将 Y 锁定为 10 和 100跨度>
    • 好的,我已经更新了我的答案,如果有帮助不要忘记标记它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    相关资源
    最近更新 更多