ich verwende für dichten schneefall unsterbliche partikel die sich mit der kamera mitbewegen:
Code:
//-------------------------------------------------------------------------------------------------snow
var g_snowcubex;
var g_snowcubey;
var g_snowcubez;
function turbulence()
{
my.x=cycle(my.x,camera.x-g_snowcubex,camera.x+g_snowcubex);
my.y=cycle(my.y,camera.y-g_snowcubey,camera.y+g_snowcubey);
my.z=cycle(my.z,camera.z-g_snowcubez,camera.z+g_snowcubez);
//add some turbulence here
my.lifespan=1; // live forever
}
function effect_snowflake()
{
my.x=camera.x+random(g_snowcubex*2)-g_snowcubex;
my.y=camera.y+random(g_snowcubey*2)-g_snowcubey;
my.z=camera.z+random(g_snowcubez*2)-g_snowcubez;
my.vel_z=-(random(4)+4);
my.vel_x+=random(2)-1;
my.vel_y+=random(2)-1;
my.bmap=b_snowflake;
my.size=random(1)+2;
my.alpha=random(30)+10;
my.move=on;
my.function=turbulence;
}
function snow(cx,cy,cz,numparticles)
{
g_snowcubex=cx;
g_snowcubey=cy;
g_snowcubez=cz;
effect(effect_snowflake,numparticles,nullvector,nullvector);
}
snow(3000,3000,1000,8000);
erzeugt 8000 schneeflocken in einem 6000x6000x2000 quants großen würfel der sich mit der kamera mitbewegt.
mit ein paar änderungen (schnellere fallgeschwindigkeit,...) funktioniert diese methode sicher auch für regen!
...
außerdem können so auch recht gute nebeleffekte erzielt werden. dafür sollten wegen dem ungenauen culling bei großen partikeln aber sprites verwendet werden...