0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 7
1

Particle System С#

18.10.2019, 17:23. Показов 997. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите почему не работает система частиц, код взял из интернета, уже всё разобрал не могу понять почему не работает!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SFML;
using SFML.System;
using SFML.Graphics;
using SFML.Window;
 
 
namespace ComicDefender
{
    class Program
    {
        private static RenderWindow _window;
 
        public static void Main(string[] args)
        {
            _window = new RenderWindow(new VideoMode(800, 600), "SFML window");
            ParticleSystem particles = new ParticleSystem(1000);
            Clock clock = new Clock();
            _window.SetVisible(true);
            _window.SetFramerateLimit(60);
            _window.Closed += new EventHandler(OnClosed);
            while (_window.IsOpen)
            {
                Vector2i mouse = Mouse.GetPosition(_window);
                //Console.WriteLine(mouse.X + " " + mouse.Y);
                particles.SetEmitter(new Vector2f(mouse.X, mouse.Y));
                particles.update(clock.Restart());
                _window.DispatchEvents();
                _window.Clear(Color.Black);
                _window.Draw(particles);
                _window.Display();
 
            }
        }
 
        private static void OnClosed(object sender, EventArgs e)
        {
            _window.Close();
        }
    }
    class ParticleSystem : Transformable, Drawable
    {
        public VertexArray m_vertices;
        public Time m_lifetime;
        public List<Particle> m_particles;
        public Vector2f m_emitter;
 
        public ParticleSystem(int count)
        {
            m_particles = new List<Particle>(count);
            m_vertices = new VertexArray(PrimitiveType.Points, (uint)count);
            m_lifetime = Time.FromSeconds(count);
            m_emitter = new Vector2f(0, 0);
            for (int i = 0; i < count; i++)
            {
                m_particles.Add(new Particle());
                resetParticle(i);
            }
        }
        public void Draw(RenderTarget target, RenderStates states)
        {
            states.Texture = null;
            states.Transform *= Transform;
            target.Draw(m_vertices, states);
        }
        public void SetEmitter(Vector2f newEmitter)
        {
            m_emitter = newEmitter;
            Console.WriteLine(newEmitter.X + " " + newEmitter.Y);
        }
        public void update(Time elapsed)
        {
            for (int i = 0; i < m_particles.Count; ++i)
            {
                // update the particle lifetime
                Particle p = m_particles[i];
                p.lifetime -= elapsed;
 
                m_particles[i] = p;
 
                // if the particle is dead, respawn it
                if (p.lifetime <= Time.Zero)
                {
                    resetParticle(i);
                }
                // update the position of the corresponding vertex
                var a = m_vertices[(uint)i];
                a.Position += p.velocity * elapsed.AsSeconds();
 
 
                // update the alpha (transparency) of the particle according to its lifetime
                float ratio = p.lifetime.AsSeconds() / m_lifetime.AsSeconds();
                a.Color = Color.Green;
                a.Color.A = (byte)(ratio * 255);
                m_vertices[(uint)i] = a;
            }
        }
        void resetParticle(int index)
        {
            // give a random velocity and lifetime to the particle
            float angle = (new Random().Next() % 360) * 3.14f / 180;
            float speed = (new Random().Next() % 50);
            var temp = m_particles[index];
            temp.velocity = new SFML.System.Vector2f((float)(Math.Cos(angle) * speed), (float)(Math.Sin(angle) * speed));
            temp.lifetime = Time.FromMilliseconds((new Random().Next() % 2000) + 1000);
            m_particles[index] = temp;
            // reset the position of the corresponding vertex
            var temp2 = m_vertices[(uint)index];
            temp2.Position = m_emitter;
            m_vertices[(uint)index] = temp2;
        }
        public class Particle
        {
            public Vector2f velocity;
            public Time lifetime;
        }
    }
}
На консоле вроде пишет что создалась частица в такой то координате, но на экране их нет. Помогите разобраться пожалуйста.

Particle System С#
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2019, 17:23
Ответы с готовыми решениями:

Particle System
Можно ли на particle system написать скрипт ?Когда игрок нажимает на кнопку (OnTriggerEnter)...

Particle System для 2д игры
Люди, я уже запарился искать решение. Проблемы со слоями и никак не получается решить Может кто...

Не отображаются частицы particle system
Пытался сделать разлетающуюся пыль при запуске ракеты вроде простенько все сделал - частицы 1...

Particle system and audio source
Помогите пожалуйста. Есть молния созданная с помощью системы частиц, как добавить звук грома после...

0
18.10.2019, 17:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2019, 17:23
Помогаю со студенческими работами здесь

Particle System, бонус, Destroy
Приветствую форумчан! Прошу подсказки или прямой помощи. Маленькая предыстория: Хочу сделать...

Проблема с Particle System в Unity2D
Здравствуйте! Я хочу сделать так чтобы когда мой перс умирал, проигрывалось partical system. Вот...

Particle system для мобилок. Unity3D
Всем хай. В гугле искал какую либо инфу насчет системы частиц под мобильники, но ничего путного...

Unity, Particle System - не получается настроить цвет
На скриншоте 3 экрана. 1-й это видеоурок, у него в выборе цвета 4й А-канал чёрно-белый. Я у меня...

Particle System как сделать отскок частиц от коллайдера 2D
Всем привет! Частицы проходят сквозь коллайдер 2D Не могу найти настройку в Particle System,...

Важно!При нажатии на кнопке выдает: using System; using System.Collections.Generic; using System
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru