Название вашего вопроса как-то задает вопрос, совершенно противоположный телу вопроса ...
Если я правильно понимаю ваш вопрос, вы просто хотите всегда следовать за мышью, а не просто удерживая кнопку нажатой.
Просто сделайте движение в Update
. А затем используйте Vector3.MoveTowards
. Вам даже не нужно хранить положение мыши и вычислять дельту для этого. MoveTowards
уже обрабатывает его для вас.
Обратите внимание, что весь код имеет смысл только в том случае, если вы действительно хотите переместить объекты в экранном пространстве пиксель координаты. Например, если ваш объект находится внутри холста Screespace Overlay. В противном случае вы, вероятно, захотите преобразовать позицию в World-Space, используя
var worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition + Vector3.forward * distanceToCamera);
Также обратите внимание, что в настоящее время ваш код зависит от частоты кадров! Вы перемещаете объект с фиксированной скоростью dragSpeed Units / frame
. Вы бы предпочли использовать независимое от частоты кадров значение dragSpeed Units / real-time seconds
. Поэтому вы должны использовать Time.deltaTime
и отрегулировать значение dragSpeed
, которое теперь должно быть больше или меньше 60
, чтобы получить тот же эффект.
public float dragSpeed = 60f;
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, Input.mousePosition, dragSpeed * Time.deltaTime);
}
Это теперь просто движется с постоянной скоростью к позиции мыши.