Здравствуйте дорогие читатели!
Сегодня я хочу рассказать о том как можно расширить возможности Particle Systems в Unity3D используя скрипты.
Для примера я на пустую сцену добавил Particle System из меню GameObject
Теперь нужно его немного отредактировать для наглядности. Я изменил Start Speed на 0, чтобы частицы не имели начальной скорости, а просто оставались на месте, а также в Simulation Space выбираю World, чтобы частицы не привязывались к родительскому объекту, а стали независимыми.
Теперь наш Particle System больше похож на облако. Добавим к его GameObject скрипт. Для этого выделяем GameObject нашего Particle System и нажимаем в его свойствах в самом низу кнопку Add Component.
Называете его как вам захочется. Я назвал его Circle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using UnityEngine; using System.Collections; public class Circle : MonoBehaviour { private float _tick = 0; private Vector3 _startLocation; void Start() { _startLocation = transform.localPosition; } void FixedUpdate() { _tick += 0.1f; float x = (float)Mathf.Sin(_tick); float z = (float)Mathf.Cos(_tick); Vector3 addVector = new Vector3(x, 0, z) * 5; transform.localPosition = _startLocation + addVector; } } |
Теперь немного усложним задачу и заставим двигаться объект по спирали. Для этого создадим ещё одну переменную y, которой присвоим значение _tick/10. Если оставить просто _tick, то скорость «взлета» будет слишком большой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using UnityEngine; using System.Collections; public class Circle : MonoBehaviour { private float _tick = 0; private Vector3 _startLocation; void Start() { _startLocation = transform.localPosition; } void FixedUpdate() { _tick += 0.1f; float x = (float)Mathf.Sin(_tick); float z = (float)Mathf.Cos(_tick); float y = _tick/10; Vector3 addVector = new Vector3(x, y, z) * 5; transform.localPosition = _startLocation + addVector; } } |
Всем спасибо за внимание!