Задать вопрос
Ответы пользователя по тегу 2D
  • Как заставить двигаться объект в сторону курсора?

    @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));
            }
        }
    }
    Ответ написан
    Комментировать