【问题标题】:How can I limit draggable distance?如何限制可拖动距离?
【发布时间】:2018-04-17 13:46:12
【问题描述】:

我尝试制作一个可拖动的抽屉,我使用了以下代码:

     void OnMouseDrag() {
         Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
         Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;

         //Debug.Log(curPosition[0]);
         curPosition.y = gameObject.transform.position.y;
         curPosition.z = gameObject.transform.position.z;
         //curPosition.x = Mathf.Clamp(gameObject.transform.position.x,-3.0F,3.0F);
        transform.position = curPosition;

     }

如何限制 x 的拖动范围?因为我不想有这样的东西:

我尝试使用 Mathf.Clamp,但效果不佳。

谢谢!对不起我的英语。

【问题讨论】:

  • 您可能仍需要对其进行调整,但似乎Mathf.Clamp() 无法正常工作,因为您将curPosition.x 夹在worldPosition.x - 3.fworldPosition.x + 3.f 之间。试试Mathf.Clamp(gameObject.transform.position.x, gameObject.transform.position.x - 3.0F, gameObject.transform.position.x + 3.0F); :-)

标签: unity3d draggable drag


【解决方案1】:

我建议使用Physics Joints,更准确地说是ConfigurableJoint。您可以为关节在每个轴上的移动距离设置一个限制(我曾经用它来做一些抽屉)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2017-04-30
    • 2011-03-15
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多