using UnityEngine;
public class MouseDragTarget : MonoBehaviour
{
public Transform target;
public float speed = 10;
Vector3 startPos;
Vector3 targetPos;
Ray ray;
RaycastHit hit;
private void Awake()
{
targetPos = target.position;
}
private void OnMouseDown()
{
if (IsRaycast())
{
startPos = hit.point;
}
}
private void Update()
{
target.position = Vector3.Lerp(target.position, targetPos, Time.deltaTime * speed);
}
private void OnMouseDrag()
{
if (!IsRaycast())
return;
targetPos += (hit.point - startPos);
startPos = hit.point;
}
bool IsRaycast()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
return Physics.Raycast(ray, out hit, 1000);
}
}