正在拖动的释放(放置)对象

时间:2014-05-18 23:37:27

标签: c# unity3d

我正在使用OnMouseDrag事件来移动对象。麻烦的是,除非释放鼠标按钮,否则对象不会掉落。如果拖动到屏幕上的某个位置(2d),我希望能够让对象掉落。因此,即使鼠标按钮仍然向下,也会掉落物体。

以下是我正在使用的代码:

void OnMouseDown()
{
    screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
    Debug.Log ("We clicked fire block!");
    offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, gameObject.transform.position.y, screenPoint.z));
}

void OnMouseDrag()
{
    Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, gameObject.transform.position.y, screenPoint.z);

    if (curScreenPoint.x <= 1) {
        return;
            }

    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint)+offset;

    transform.position = curPosition;

    isDrag = true;

}

1 个答案:

答案 0 :(得分:2)

我不明白一件事:这个位置是屏幕的一部分还是游戏中的3D位置?

两种情况的发布:

1 - 位置是游戏中的3D位置:

Physics.Raycast方法中使用OnMouseDragUpdate来检查你的鼠标光标是否正在击中它应该释放拖动对象的区域(你需要一个带有代表该对象的对手的游戏对象)地点)。如果是这样,只需执行isDrag = false

Here's an example如何进行光线投射。

2 - 位置是屏幕的一部分:

Input.mousePosition的范围从0(0%)到1(100%),因此只需检查OnMouseDragUpdate方法中的鼠标位置,以验证它是否位于您想要的区域内,如果有的话isDrag = false