Game Maker - создание игр | HellRoom Games

Game Maker | GameMaker: Studio [Game-Maker.ru] => Для продвинутых пользователей: решение сложных проблем => Тема начата: SG23NK23 от Декабрь 19, 2021, 16:42:08



Название: Как повернуть систему частиц? И зафиксировать дальность?TDS. GMS2(2.3.7.606)
Отправлено: SG23NK23 от Декабрь 19, 2021, 16:42:08
Здравствуйте, если будут не понимания то прошу написать что ещё предоставить.
У меня есть система частиц. И получается следующее если её просто приклеить к повороту мышки то она разлетается по диагонали. А нужно чтобы струя частиц была струёй всегда.
Т.е. если взять и смотреть строго в право или вверх (по оси х или y) то она струя, а если по диагонали то струя превращается в некий овал.
Так же хотелось чтобы дальше чем некий радиус она (струя) не вылазила. Не могу этот момент сделать.
Прошу помочь мне.


Название: Re: Как повернуть систему частиц? И зафиксировать дальность?TDS. GMS2(2.3.7.606)
Отправлено: SilentPhil от Декабрь 19, 2021, 17:35:37
Прикладывайте код.

Цитировать
Так же хотелось чтобы дальше чем некий радиус она (струя) не вылазила. Не могу этот момент сделать.

При уменьшении времени жизни частиц - струя будет меньше.


Название: Re: Как повернуть систему частиц? И зафиксировать дальность?TDS. GMS2(2.3.7.606)
Отправлено: SG23NK23 от Декабрь 19, 2021, 19:19:53
xx = x + lengthdir_x(20, image_angle);
yy = y + lengthdir_y(-30, image_angle-90)

if(mouse_check_button(mb_left))
{
   flame = part_system_create()
   flameset = part_type_create()
   part_type_shape(flameset,pt_shape_square)
   part_type_size(flameset,0.01,0.04,0.01,0.02)
   part_type_life(flameset,20,25)
   part_type_direction(flameset,1,5,2,1)
   part_type_color_rgb(flameset,200,256,40,70,0,30)
   fle = part_emitter_create(flame)
   part_emitter_region(flame,fle,xx, mouse_x
                         ,yy, mouse_y
   ,ps_shape_ellipse,ps_distr_linear)
   part_emitter_burst(flame,fle,flameset,100)
}

всё это в степе. А и я тут уже менял некоторые моменты такие как линию на эллипс. Что бы выглядело как разброс огня. Как в огнемёте.


Название: Re: Как повернуть систему частиц? И зафиксировать дальность?TDS. GMS2(2.3.7.606)
Отправлено: SilentPhil от Декабрь 20, 2021, 14:05:25
1) Если в lengthdir указать разный угол для каждого компонента вектор (x и y), то на выходе скорее всего получится не то, что вы хотите. Вот пример. (https://yal.cc/r/gml/?mode=GL&ver=GMS2&tabs_lz=NobwRAdghgtgpmAXGGUCWEwBowGMD2AJgsgMTEBmGcABLgE5xQAucAOvWxGqgOZwB9KBF4AbWgF4aABgDcHLgojk4VCLUL0oAdyU8o-ISPE0A1FIBM8zhCUB6OzQDq9fCJriRzABaE0nGwA3KHoaAA8ARhopAGZpOSVg0IBPKNj460UgkPCLaPCo0w84L19-ATCACgtpLBp9Q2ExOABKTIgkmmS8qVSzYtK-egFkyoBaOLqGwSbxMYBOaRalJU0dAQBnOGYBAlF8ekrcAUZCNtWtbSF6V21KyLrUurCLR9eaAFZzm3tHAHkANYDXg+IaJHKRfIANgy4JSaRocQSP2yoRe+UhRU8ILKwyqk3qfBmxla7U63XyfSxJRxQxGlQJ0yMzWWKK4ayuWx2ewORwEvEYJW+7Mu11u9wij0luTedS+7V+zjQPhoqGY9DQYRo6uEGwoBzVaDccPCMXySLJOWSZqkMORWRF6y5u3w+0OxwARqIAK6kpRqjVhTbbSoBzUCbQHUSEOphoMe71oaP3GKPVMyOq1DOEgzE5p1aWFlrCiAcsX4O5ZrMEgny-0sQPB5ihhvhyP0aOx1vxxPRgRoYgQZjK0bF2RgAC+AF0gA)
2) part_emitter_region - задается прямоугольником. Поэтому, за исключением формы линии (ps_shape_line), его не получится вращать.

Тут либо с помощью part_type_direction нужно указывать нужное направление (сейчас оно у вас там фиксировано), либо вращать всю партикль систему при отрисовке с помощью матрицы трансформации (по ссылке это синяя стрелка).