[英]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.