unity 鼠标滑动屏幕根据滑动偏移量拖拽模型
按下记录鼠标初始化位置
private Vector3 lastpos;
private float speed=10;
private void OnMouseDown()
{
if (PlateformData.GetCurrentPlatform() == PlatformType.PC)
{
if (!enableMove)
{
return;
}
CheckAction();
//三维物体坐标转屏幕坐标
Vector3 screenSpace = GlobeData._MainCamera.WorldToScreenPoint(transform.position);
Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);
//物体的位置,屏幕坐标转换为世界坐标
Vector3 objectPosition = GlobeData._MainCamera.ScreenToWorldPoint(mousePosition);
lastpos = objectPosition;
}
}
拖拽函数
private void OnMouseDrag()
{
//三维物体坐标转屏幕坐标
Vector3 screenSpace = GlobeData._MainCamera.WorldToScreenPoint(transform.position);
Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);
//物体的位置,屏幕坐标转换为世界坐标
Vector3 objectPosition = GlobeData._MainCamera.ScreenToWorldPoint(mousePosition);
Vector3 offset= objectPosition - lastpos;
Vector3 pos = transform.position + offset;
transform.position = Vector3.Lerp(transform.position, pos, speed * Time.deltaTime * 10);
lastpos = objectPosition;
}