Задать вопрос
@1nkki

Как заставить двигаться объект в сторону курсора?

У меня есть объект и мне нужно чтобы он начал двигаться в сторону курсора, а потом летел самостоятельно. То есть мне надо что бы направление было задано курсором и потом объект летел в его сторону.
  • Вопрос задан
  • 12 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SWA512
Gamedev
Код примерный, не рабочий:
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));
        }
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы