Skocz do zawartości

Deszcz


Rekomendowane odpowiedzi

Wytłumaczy mi ktoś ten kod linijkę po linijce po chcę go przerobić aby desz padał nie z viewa[0] tylko z krańców rooma:

 

    view_center_x = view_xview[0]+view_wview[0]/2;
    view_center_y = view_yview[0]+view_hview[0]/2;
    
    for ( i=0; i<gestosc; i+=1 )
    {
    
            if ( time > 0 ) time[ i ] -= 1;
            if ( alpha > 0 ) alpha[ i ] -= 0.02;
            
            if ( time[ i ] <= 0 || 
                 point_distance( X[ i ], Y[ i ], view_center_x, view_center_y ) < 64+random(64) || 
                 alpha[ i ] <= 0 )
            {
                img[ i ] = random( 4 );
                
                _side = round(random( 10 ));
                
                if ( _side == 1 )
                    draw_sprite( sDrop, random(2), X[ i ], Y[ i ] );
                
                _side = round(random( 1 ));
                
                if ( _side )
                { 
                    X[ i ] = choose( view_xview[0], view_xview[0]+view_wview[0] );
                    Y[ i ] = random( view_hview[0] );
                }
                else
                { 
                    X[ i ] = random( view_wview[0] );
                    Y[ i ] = choose( view_yview[0], view_yview[0]+view_hview[0] );
                }
                
                dir[ i ] = point_direction( X[ i ], Y[ i ], view_center_x, view_center_y );
                spd[ i ] = 5 + random( 3 ) + gestosc/50;
                time[ i ] = 50 + random( 30 );
                alpha[ i ] = 1; //random( 1 ) + 0.5;
            }
            
            X[ i ] += lengthdir_x( spd[ i ], dir[ i ] );
            Y[ i ] += lengthdir_y( spd[ i ], dir[ i ] );
            
            draw_sprite_ext( sRain, img[ i ], X[ i ], Y[ i ], 1, 1, dir[ i ], c_white, alpha[ i ] );
                
    }
    
    if ( rAlpha > 0 ) rAlpha -= 0.1;
    
    _side = round(random( 230 - gestosc ));
    
    if ( _side == 1 )
    {
        rAlpha = random(1)+0.5;
        rRate = random( 0.5 ) + 0.2
    }
    
    draw_set_alpha( rAlpha );
    
    draw_rectangle( view_xview[0], view_yview[0], view_xview[0]+view_wview[0], view_yview[0]+view_hview[0], 0 );
    
    draw_set_alpha(1);

Chyba trzeba przerobić to

   view_center_x = view_xview[0]+view_wview[0]/2;
    view_center_y = view_yview[0]+view_hview[0]/2;

ale niewiem jak :P

 

Z góry dzieki :D

Odnośnik do komentarza
Udostępnij na innych stronach

if ( _side )

{

X[ i ] = choose( view_xview[0], view_xview[0]+view_wview[0] );

Y[ i ] = random( view_hview[0] );

}

else

{

X[ i ] = random( view_wview[0] );

Y[ i ] = choose( view_yview[0], view_yview[0]+view_hview[0] );

}

Za losowanie miejsc odpowiada to.

 

Zamień przy losowaniu viewy na 0,0,room_width i height i bingo.

Odnośnik do komentarza
Udostępnij na innych stronach

EDIT :

 

Czyli

        if ( _side )
                { 
                    X[ i ] = choose( 0,0,room_width );
                    Y[ i ] = random( view_hview[0] );
                }
                else
                { 
                    X[ i ] = random( view_wview[0] );
                    Y[ i ] = choose( 0,0,room_height );
                }
                }

???

Odnośnik do komentarza
Udostępnij na innych stronach

Nie, nie. Poza tym zostawiłeś w jednym wymiary viewa. Weźże zastanów się co robisz.

 

view_xview to lewy brzeg viewa(ekranu). view_wview to szerokość viewa. Po dodaniu ich otrzymujemy prawy brzeg ekranu.

Analogicznie z y.

 

Czyli jeśli chodzi o room zamiast view_xview musisz podstawić 0 a dalej się domyśl.

 

room_width+room_height

O boże...

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...