Unity- Как добавить частицы на курсор

У меня есть курсор, как сделать так чтобы частицы следовали за ним (Примером может быть игра Ori and the blind forest)


Ответы (1 шт):

Автор решения: grouptout

Как один из вариантов. Работает только когда у вас 3D частицы.

  1. На пустом месте далеко за сценой создаете частицы, так чтобы их не было видно в камере ни при каких условиях. Возле частиц которые находятся очень далеко создаем еще камеру, в Clear flags ставим Solid color, альфу цвета выкручиваем в 0, ну и projection ставим orthographic. Size ставим по усмотрению. Еще выключаем в ней audiolistener введите сюда описание изображения

  2. В окне файлов проекта создаем Render Texture (Create -> Render Texture). Перетаскиваем текстурку в созданную камеру в поле Target texture. введите сюда описание изображения

Поставил 3д материал для частиц т.к. с 2д не работает введите сюда описание изображения

  1. В окне иерархии создаем Canvas а в нем Raw Image. Задаем ей желаемый размер. В поле Texture Перетаскиваем нашу Render Texture введите сюда описание изображения

  2. После запуска можно увидеть что частицы уже на экране и анимированны. введите сюда описание изображения

  3. Ну а далее нам нужно двигать Raw Image за курсором НО если у вас частицы тоже имеют эффект при передвижении (например у меня в системе частиц выставлено Simulation Space -> World), то нам еще прийдётся двигать созданную камеру и частицы. Чтобы было удобнее их двигать я помещу их в созданный пустой объект, который и буду двигать.введите сюда описание изображения

  4. Пишем скрипт, который повесим на нашу RawImage для передвижения за курсором.

     public class MoveParticleRawImage: MonoBehaviour
     {
        private void Update()
        { 
          transform.position = Input.mousePosition;
        }
     }
    
  5. Запустив игру можно увидеть что частицы следуют за курсором, Но эффектов вверх/вниз/вправо/влево нету. введите сюда описание изображения

  6. Пишем скрипт для объекта в котором находятся камера и частицы и вешаем скрипт на него.

    public class MoveParticles : MonoBehaviour
    {
      public float sensitivity = 4; // можно менять под себя для настройки 
      //чувствительности движения партиклов
    
      private Camera _camera;
      private Vector3 _originalTransform;
    
    
      private void Awake()
      {
          _camera = Camera.main;
          _originalTransform = transform.position;
      }
    
      private void Update()
      {
          transform.position = Input.mousePosition / sensitivity + _originalTransform;
      }
    }
    

введите сюда описание изображения

  1. Запускаем

введите сюда описание изображения

Далее можно уже кастомизировать под себя и т.д.

→ Ссылка