IEnumerator OnMouseDown()
{
var camera = Camera.mainCamera;
if (camera)
{
//转换对象到当前屏幕位置
Vector3 screenPosition = camera.WorldToScreenPoint(transform.position);
//鼠标屏幕坐标
Vector3 mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
//获得鼠标和对象之间的偏移量,拖拽时相机应该保持不动
Vector3 offset = transform.position - camera.ScreenToWorldPoint(mScreenPosition);
print("drag starting:" + transform.name);
//若鼠标左键一直按着则循环继续
while (Input.GetMouseButton(0))
{
//鼠标屏幕上新位置
mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
// 对象新坐标
transform.position = offset + camera.ScreenToWorldPoint(mScreenPosition);
//协同,等待下一帧继续
yield return new WaitForFixedUpdate();
}
print("drag compeleted");
}
}