我正在使用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;
}
答案 0 :(得分:2)
我不明白一件事:这个位置是屏幕的一部分还是游戏中的3D位置?
两种情况的发布:
1 - 位置是游戏中的3D位置:
在Physics.Raycast
方法中使用OnMouseDragUpdate
来检查你的鼠标光标是否正在击中它应该释放拖动对象的区域(你需要一个带有代表该对象的对手的游戏对象)地点)。如果是这样,只需执行isDrag = false
。
Here's an example如何进行光线投射。
2 - 位置是屏幕的一部分:
Input.mousePosition
的范围从0(0%)到1(100%),因此只需检查OnMouseDragUpdate
方法中的鼠标位置,以验证它是否位于您想要的区域内,如果有的话isDrag = false
。