Particle System
|
|
desantaav | Дата: Воскресенье, 13 Марта 2016, 21:27 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте. У меня такой вопрос, можно ли используя системы частиц например Particle System, заставить двигаться по определенной траектории, не по прямой. Предполагается с помощью неё показать движение газа в трубе, соответственно трубы изгибаются по тому по прямой не получится.
|
|
| |
Lertmind | Дата: Воскресенье, 13 Марта 2016, 23:25 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Через код можно управлять ими, есть функция ParticleSystem.GetParticles / SetParticles. Здесь пример синусоиды и новогоднего дерева.
|
|
| |
desantaav | Дата: Воскресенье, 20 Марта 2016, 17:03 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Ну и в продолжение темы Нашёл в инете подобное
Код public void Play(bool withChildren = true);
К сожалению не знаком с этим, кто может подсказать как включать используя это
|
|
| |
Lertmind | Дата: Воскресенье, 20 Марта 2016, 17:19 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| А ты как думаешь, если это метод? Вызвать у компонента:
Код var ps = GetComponent<ParticleSystem>(); ps.Play();
|
|
| |
desantaav | Дата: Воскресенье, 20 Марта 2016, 19:35 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Код Slider qw; public GameObject test2;
// Use this for initialization public void Start () {
qw = GetComponentInParent<Slider>(); }
public void Update2s() { Debug.Log("№=" + qw.value); if ((float)qw.value <= 70) { test2. gameObject.GetComponent<ParticleSystem>().Stop(); } else if ((float)qw.value >= 70) { test2.gameObject.GetComponent<ParticleSystem>().Play(); } При qw меньше 70 Particle System выключается а при 70 и боле включается и тут-же зависает...
|
|
| |
Lertmind | Дата: Воскресенье, 20 Марта 2016, 20:03 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Если у тебя Update2s() вызывается так же часто, как Update() тогда конечно, Play() надо вызывать один раз, у тебя каждый раз вызывается. Ещё: при 70 у тебя выполнится первое условие, потому что там <= (меньше или равно) 70. Если ты используешь слайдер, тогда можешь обрабатывать событие onValueChanged, когда значение меняется прописываешь свою логику.
|
|
| |
desantaav | Дата: Воскресенье, 20 Марта 2016, 20:14 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Т.е. он запушенный пытается еще раз запустить по тому виснет Particle System ?
|
|
| |
Lertmind | Дата: Воскресенье, 20 Марта 2016, 20:52 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Наверно, я не пробовал так делать. Если тебе лень делать через события, у ParticleSystem есть переменная isPlaying для проверки играет ли сейчас.
|
|
| |
desantaav | Дата: Понедельник, 21 Марта 2016, 12:33 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Код using UnityEngine; using System.Collections; using UnityEngine.UI;
public class sl : MonoBehaviour {
public Slider newVl; public GameObject test1;
// Use this for initialization public void Start () {
newVl.onValueChanged.AddListener(delegate { testq();});
} // Update is called once per frame void Update () {}
public void testq() {
Debug.Log("№=" + newVl.value); }
} хотел посмотреть как работает onValueChanged но Unity выдает ошибку: Код NullReferenceException: Object reference not set to an instance of an object sl.Start () (at Assets/sl.cs:15)
|
|
| |