在一行中拖动对象

时间:2017-02-08 17:01:36

标签: c# object unity3d 2d drag

我试图制作拖动效果。我有一个项目,你应该用骨头拉骨头。拖动工作正常,但是当我抓住骨头时,我可以向各个方向移动它。我想要实现的是我只能向一个方向拖动它。在下面的图像我的意思是红线。我尝试了很多东西但到目前为止没有任何效果任何帮助表示赞赏。

enter image description here enter image description here

我使用这些功能进行拖动。

void OnMouseDown()
{
    offset = this.transform.position - Camera.main.ScreenToWorldPoint(new Vector2(Input.mousePosition.x, Input.mousePosition.y));
}

void OnMouseDrag()
{
    Vector3 curScreenPoint = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
    transform.position = curPosition;
}

1 个答案:

答案 0 :(得分:1)

只需获取鼠标的x组件并使用localPosition

void OnMouseDown()
{
    offset = this.transform.localPosition - Camera.main.ScreenToWorldPoint(new Vector2(transform.localPosition.x, Input.mousePosition.y));
}

void OnMouseDrag()
{
    Vector3 curScreenPoint = new Vector2(transform.localPosition.x, Input.mousePosition.y);
    Vector3 mousePos = Camera.main.ScreenToWorldPoint(curScreenPoint);
    Vector3 curPosition = new Vector3(mousePos.x, 0f, 0f) + offset;
    transform.localPosition = curPosition;
}