Код примерный, не рабочий:
using UnityEngine;
public class MoveTowardsCursorCoroutine : MonoBehaviour
{
public float speed = 5f;
public float targetDistance = 1f;
private Coroutine moveCoroutine;
IEnumerator MoveToTarget(Vector3 target)
{
while (true)
{
Vector3 direction = (target - transform.position).normalized;
float distance = Vector3.Distance(transform.position, target);
// Если достигли цели, начинаем двигаться по инерции
if (distance <= targetDistance)
{
// Задаем новую цель немного впереди текущей позиции
target = transform.position + direction * 10f; // Примерная дистанция инерции
}
// Плавное перемещение
transform.position += direction * speed * Time.deltaTime;
yield return null;
}
}
void Update()
{
// Получаем позицию курсора в мировых координатах
Vector3 mousePosition = Input.mousePosition;
mousePosition = Camera.main.ScreenToWorldPoint(mousePosition);
mousePosition.z = transform.position.z;
// Если корутина не запущена, запускаем новую
if (moveCoroutine == null)
{
moveCoroutine = StartCoroutine(MoveToTarget(mousePosition));
}
}
}