繁体   English   中英

使用移动相机以统一2D方式拖动对象

[英]Drag object in unity 2d with moving camera

我想使用以下代码在unity2d拖动2d对象:

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

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

问题是我的相机也沿x轴移动,因此当我单击gameobject拖动它时,它也沿x轴移动。 我想将这个gameobejct静态,以便将其放置在原处并且​​不会移动? 有什么建议么?

您可以尝试使用鼠标指针的速度来代替以屏幕为中心的绝对位置。 就像是:

if(beingDragged) {
    transform.position += new Vector3(Input.GetAxis("Mouse X"),
            Input.GetAxis("Mouse Y"), 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;

}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM