Пятница, 19 Апреля 2024, 05:15

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Particle System (Система частиц)
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
был не раз
Сейчас нет на сайте
Ну и в продолжение темы rolleyes
Нашёл в инете подобное

Код
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)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Particle System (Система частиц)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг