level 6
怎么用粒子模块实现在特定的时间,特定的位置向四周随机的方向发射特定数目的粒子?
还有粒子的那16个类型是干什么的?(#欢呼)
2020年06月14日 02点06分
1
level 14
简单研究了一下粒子系统。
弄一个物体,弄一个创建事件与时钟事件,在创建事件中启动时钟。在时钟里加入以下代码:
ps = part_system_create();//粒子系统
pt = part_type_create();//粒子类型
part_type_shape(pt,pt_shape_flare);//粒子的形状,火光信号弹
part_type_size(pt,0.1,0.2,0,0);//粒子类型的大小
part_type_speed(pt,0.5,4,0,0);//粒子类型的速度从0.5到4的随机值
part_type_direction(pt,0,360,0,0);//粒子的方向,0-360的随机值
part_type_color1(pt,c_red);//粒子的颜色,红色
part_type_alpha2(pt,1,0.4);//粒子的透明度
part_type_life(pt,60,80);//粒子的生存时间
em = part_emitter_create(ps);//发射器
part_emitter_region(ps,em,320,320,240,240,ps_shape_rectangle,ps_distr_linear);//发射器的区域,320,240是一个点。
part_emitter_burst(ps,em,pt,10)//用发射器发射10个粒子
alarm[0]=50//时钟下次启动。
如果想实现特定时间就用alarm来限制,特定位置就是其中的发射器区域,本身是一个矩形区域,把最小坐标、最小坐标设置一致就是一个点。特定数目的粒子就使用part_emitter_burst()最后一个参数就是指定数目的粒子。
2020年06月15日 10点06分
3
level 14
为了让代码更高效,下面把上面的代码调整一下。
首先是ps、pt都放到创建事件里,这样就可以实现一次创建多次调用,节省内存。
就是下面的代码:
ps = part_system_create();//粒子系统
pt = part_type_create();//粒子类型
part_type_shape(pt,pt_shape_flare);//粒子的形状,火光信号弹
part_type_size(pt,0.1,0.2,0,0);//粒子类型的大小
part_type_speed(pt,0.5,4,0,0);//粒子类型的速度从0.5到4的随机值
part_type_direction(pt,0,360,0,0);//粒子的方向,0-360的随机值
part_type_color1(pt,c_red);//粒子的颜色,红色
part_type_alpha2(pt,1,0.4);//粒子的透明度
part_type_life(pt,60,80);//粒子的生存时间
然后加上启动时钟事件:
alarm[0]=1
然后在时钟事件中创建粒子。
part_particles_create(ps, 320, 240, pt, 10)
alarm[0]=50
这里舍弃了发射器,而使用part_particles_create函数,这样更简单就能实现要求的目的,而发射器可以设定发射区域,粒子在区域中的分布特点等,显然这里并不需要,所以仅使用简单的创建函数即可。这样也可以实现同样的目的,而且更加简单节省内存。
2020年06月16日 07点06分
4