用移动相机拖动对象2d

时间:2014-11-24 06:48:31

标签: c# unity3d

我想使用以下代码在unity2d中拖动我的第2个对象:

offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new 

Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));

问题是我的相机也沿x轴移动,所以当我点击gameobject拖动它时,它会沿着x轴移动。我希望将此gameobejct设为静态,以便它取代它并且不会移动?有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用鼠标指针的速度,而不是使用绝对以屏幕为中心的位置。类似的东西:

if(beingDragged) {
    transform.position += new Vector3(Input.GetAxis("Mouse X"),
            Input.GetAxis("Mouse Y"), 0);
}

另一种选择是使用变量来跟踪自拖动开始以来的摄像机移动。然后你可以从你的计算中减去这个移动偏移量,这样拖动就可以在" World Space"而不是"屏幕空间"

答案 1 :(得分:0)

抱歉,我无法实施你的建议。下面是拖动对象的代码,当OnMouseDown()它总是获取移动相机的位置时。

void OnMouseDown()

   {

    screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
    offset = gameObject.transform.position + Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}

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

    Vector3 curPosition = Camera.main.ScreenToWorldPoint (curScreenPoint);
    transform.position = curPosition;

}

}