Развитие игровой вспышки
Текущее время: Пн авг 21, 2017 8:44 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: партиклы в Phaser
СообщениеДобавлено: Вт ноя 22, 2016 8:34 pm 
Не в сети

Зарегистрирован: Вс фев 24, 2013 6:44 am
Сообщений: 98
Подскажите кто знает, как правильно сделать партиклы в phaser. Я изучаю этот движок и одновременно портирую свою игру туда, щас возникла потребность в генерации партиклов разрушения, их много штук, написал я такую функцию:
Код:
    function createEffect(nam, xx, yy) {
        emitter = game.add.emitter(0, 0, 10);
        emitter.makeParticles(nam);
        emitter.x = xx;
        emitter.y = yy;
        emitter.gravity = 200;
        emitter.setScale(0.8, 0.1, 0.8, 0.1, 1500);
        emitter.start(true, 1500, null, 3);
    }

Это создает партиклы, с картинкой nam и указанными xx и yy координами. Насколько я понял это неверное решение, потому что все работает как нужно, но они видимо не удаляются, так как после того как создаешь кучу таких партиклов - игра постепенно начинает тормозить все больше и больше по мере их создания, хотя вроде как они удаляются, но видимо на самом деле нет. Пробовал не создавать каждый раз, а вначале в create прописать emitter = game.add.emitter(0, 0, 10); и потом менять ему данные в функции createEffect когда создаю партикл, но тогда не меняется изображение у партиклов, а также по мере создания все-равно игра начинает томрозить.
Как правильно сделать такое решение? Спасибо.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: партиклы в Phaser
СообщениеДобавлено: Ср ноя 23, 2016 4:46 am 
Не в сети

Зарегистрирован: Вс фев 24, 2013 6:44 am
Сообщений: 98
решил добавлением такой строки, которая удаляет эмиттер чрез 2 сек после создания:
Код:
game.time.events.add(2000, emitter.destroy, emitter);

Надеюсь более менее верное решение :yes:


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: партиклы в Phaser
СообщениеДобавлено: Ср ноя 23, 2016 10:29 am 
Не в сети
Аватар пользователя

Зарегистрирован: Ср авг 05, 2009 6:42 pm
Сообщений: 570
Откуда: Санкт-Петербург
Medals: 1
People's Choice FGD2 (1)
Насколько я понял, желательно в начале игры создать нужные эмиттеры

Код:
//particles
this.m_emitter = this.add.emitter(0, 0, 100);
this.m_world.add(this.m_emitter);
this.m_emitter.makeParticles('coin');
this.m_emitter.gravity = 200;
this.m_emitter.setAlpha(1, 0, 2000, Phaser.Easing.Exponential.InOut);
this.m_emitter.setScale(0.3, 0.7, 0.3, 0.7);


когда нужно их показать - вызывать emitter.start

Код:
this.m_emitter.x = img.x;
this.m_emitter.y = img.y;
this.m_emitter.start(true, 2000, null, 10);


В конце уровня или игры все удалять.

Код:
this.m_emitter.destroy();


Сделать столько, сколько нужно, с разными картинками.
Можно вызывать start до того как все частички прошлого вызова померли - переставление координат не влияет на старые частицы.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: партиклы в Phaser
СообщениеДобавлено: Ср ноя 23, 2016 12:30 pm 
Не в сети

Зарегистрирован: Вс фев 24, 2013 6:44 am
Сообщений: 98
спасибо, но есть ли реальная разница? По-моему и мой и ваш метод всеравно создают отдельный эмиттер который копится и не удаляется, пока его вручную не удалить. дело еще в том что у меня в течении "уровня" их кучи создаются и желательно удалять их еще до того как уровень закончится, потому как их до этого времени может сотни создаться.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: партиклы в Phaser
СообщениеДобавлено: Ср ноя 23, 2016 12:45 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Ср авг 05, 2009 6:42 pm
Сообщений: 570
Откуда: Санкт-Петербург
Medals: 1
People's Choice FGD2 (1)
Реальная разница только в том, что в моем случае все источники созданы заранее и не удаляются в течении всей игры, что хорошо для производительности. Они не будет копиться, потому что при создании указывается лимит на частички. Память замусоривается тогда, когда сами эмиттеры создаются, но не удаляются в большом количестве. Создаем эмиттер один раз, вызываем start много раз - максимум частичек 100 штук.
Это имеет смысл делать тогда, когда нужно часто использовать одни и те же частички.
Если у вас каждый раз картинки частичек разные, то наверное действительно лучше создавать источник и удалять после использования.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: партиклы в Phaser
СообщениеДобавлено: Ср ноя 23, 2016 1:01 pm 
Не в сети

Зарегистрирован: Вс фев 24, 2013 6:44 am
Сообщений: 98
Vogd писал(а):
Реальная разница только в том, что в моем случае все источники созданы заранее и не удаляются в течении всей игры, что хорошо для производительности. Они не будет копиться, потому что при создании указывается лимит на частички. Память замусоривается тогда, когда сами эмиттеры создаются, но не удаляются в большом количестве. Создаем эмиттер один раз, вызываем start много раз - максимум частичек 100 штук.
Это имеет смысл делать тогда, когда нужно часто использовать одни и те же частички.
Если у вас каждый раз картинки частичек разные, то наверное действительно лучше создавать источник и удалять после использования.

спасибо за разъяснение :yes:


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB