Skocz do zawartości

LolikZabijaka

Użytkownicy
  • Postów

    1 180
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    6

Odpowiedzi opublikowane przez LolikZabijaka

  1. Kolejny problem, niby pierdoła, ale wkurza. Chodzi o to, że są porobione pewne przeszkody(ściany itp), są ustawione pod różnym kątem, gracz posiada okrągłą maskę. Problem polega na tym, że kiedy jestem blisko obiektu, to zahaczam o każdy ostający piksel i postać się blokuje. Czy da się zrobić, aby postać nie przełaziła przez ścianę, ale przy okazji, żeby gładko mogła się wzdłuż niej poruszać, bez blokowania sie o piksele? Dodam że jak wiadomo postać miewa zmienne image_angle. Kod przy kolizji ze ścianą:

     

    GML
    x = xprevious y = yprevious

     

  2. Tu może być też babol(po części sam tworzyłem część instancji) GLOB LEFT BUTTON

     

    GML
    if celowanie=2 and bieganie=false{

    // strzelanie

    _len = sprite_get_width( sprite_bron[ bron ] ) - sprite_get_xoffset( sprite_bron[ bron ] ) //odległosć w której zostanie stworzony pocisk

    _x = lengthdir_x( _len , direction )

    _y = lengthdir_y( _len , direction )

     

    kat_rozrzutu = kat_rozrzutu[ bron ]

    ilosc_pociskow_min = ilosc_pociskow_min[ bron ]

    ilosc_pociskow_dodatkowych = ilosc_pociskow_dodatkowych[ bron ]

     

     

     

    _x = lengthdir_x( _len , direction )

    _y = lengthdir_y( _len , direction )

     

    if ( ammo_wmagazynku[ bron ] > 0 and can and laduj )

    {

    repeat( ilosc_pociskow_min + irandom( ilosc_pociskow_dodatkowych ) )

    {

    i = instance_create( x+ _x, y + _y, pocisk_typ[ bron ] ) //tworzymy pocisk

    i. direction = random_range( direction - kat_rozrzutu, direction + kat_rozrzutu ) // rozrzut

    i. image_angle = direction

    i. sprite_index = bullet_sprite[ bron ]

    i. speed = bullet_speed[ bron ]

    i. damage = weapon_damage[ bron ]

    }

    ammo_wmagazynku[ bron ] -= 1 // odejmujemy od stanu amunicja aktywnej broni 1

    can = false

    alarm[ 0 ] = weapon_time[ bron ]

    if ( ammo_wmagazynku[ bron ] > 0){

     

    instance_create( x,y, obj_luska[ bron ] )

     

     

     

     

     

     

    sound_play ( weapon_sound[ bron ] )

    }

     

    if ( ammo_wmagazynku[ bron ] = 0)

    {

    sound_play( sound_last[ bron ] )

    instance_create( x, y, o_ostatnia_luska[ bron ] )

    }

     

     

     

    shoot = true

    alarm[ 2 ] = sprite_get_number( sprite_strzal[ bron ]) *(strzal_czas[bron])

    image_index = 0

    }

     

     

    }

    if celowanie=2 {

    alarm [ 3 ] = sprite_get_number(sprite_trzyma[ bron ]) *150

    trzyma=false}

     

    if celowanie=1 {

    alarm [ 3 ] = sprite_get_number(sprite_trzyma[ bron ]) *150

    trzyma=false}

     

     

    if celowanie=0{

    celowanie = 1

    }

    bieganie=false

  3. A spróuj tak:

    GML
    if trzyma=false {

     

    if (shoot)

    {

    if ( (ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0) and shoot==false )

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha)

     

    else

    draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

    else

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

    draw_set_font( font0 ); draw_set_color( c_white ); draw_set_halign( fa_center )

    xx = view_xview[ 0 ] + view_wport[ 0 ] - 107 // pozycja panelu

    yy = view_yview[ 0 ] + view_yport[ 0 ] +1

     

     

    if ( bron != nic ) //jezeli aktualna bron != nic

    {

    draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni

    draw_text( xx + 15 , yy + 65 , string( ammo_wmagazynku[ bron ] ) + '/' + string( ammo_zapasowe[ bron ] )) // rysuje ilość ammo

    }

     

     

    if ( shoot == false and trzyma=true and celowanie=0 )

    {

    if ( shoot=false ){

    draw_sprite_ext(sprite_trzyma[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.3)

    draw_sprite_ext( sprite_trzyma[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha)

    }

    }

    else {

    draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5)

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

     

    draw_healthbar(view_xview+32,view_yview+16,view_xview+150,view_yview+20,stamina,c_white,c_red,c_aqua,0,1,1);

    draw_healthbar(view_xview+32,view_yview+23,view_xview+150,view_yview+30,zdrowie,c_white,c_red,c_lime,0,1,1);

     

     

    Cholera, dalej się ze sobą zlewają.

     

    @EDIT - Czy mogą mieć na to wpływ inne zdarzenia (stepy, itp) ?

  4. Przykro mi, ale ciągle to samo, może podrzucę Wam cały kod z DRAW, może tam jeszcze jest gdzieś jakiś babol:

     

    GML
    if trzyma=false {

     

    if (shoot)

    {

    if ( (ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0) and shoot==false )

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha)

     

    else

    draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

    else

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

    draw_set_font( font0 ); draw_set_color( c_white ); draw_set_halign( fa_center )

    xx = view_xview[ 0 ] + view_wport[ 0 ] - 107 // pozycja panelu

    yy = view_yview[ 0 ] + view_yport[ 0 ] +1

     

     

    if ( bron != nic ) //jezeli aktualna bron != nic

    {

    draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni

    draw_text( xx + 15 , yy + 65 , string( ammo_wmagazynku[ bron ] ) + '/' + string( ammo_zapasowe[ bron ] )) // rysuje ilość ammo

    }

     

     

    if ( shoot == false and trzyma=true and celowanie=0 )

    {

    if ( shoot=false )

    draw_sprite_ext(sprite_trzyma[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.3)

    draw_sprite_ext( sprite_trzyma[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha)

     

    }

    else {

    draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5)

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

     

    draw_healthbar(view_xview+32,view_yview+16,view_xview+150,view_yview+20,stamina,c_white,c_red,c_aqua,0,1,1);

    draw_healthbar(view_xview+32,view_yview+23,view_xview+150,view_yview+30,zdrowie,c_white,c_red,c_lime,0,1,1);

  5. b__d_xd.jpg

     

    1.Sprite przy strzelaniu, czyli akcja. (sprite_strzal)

    2.sprite, przy celowaniu, czyli inne zdarzenie.(sprite_bron)

    Każdy z tych spritów powinien być pokazywany osobno, w zależności od akcji

     

    Jednak kiedy już oddaję strzał, powinien być widoczny tylko "Sprite_strzal", ale widoczne są oba na raz, tak jak na rycinie nr 3.

     

    Mam nadzieję że załapałeś :D

  6. Ostatnio regularnie tutaj piszę :D Kolejny problem na jaki natrafiłem, to draw w postaci gracza, mianowicie, posiada on różne sprite, zależne od wykonywanej akcji(strzał, celowanie), problem polega na tym (dopiero teraz go wychwyciłem), że "sprite_strzał"(po prostu animacja wystrzału,kiedy zmienna "shoot" jest true) zlewa się ze "sprite_bron"(animacja celowania), po prostu nachodzą na siebie, a jak wiadomo wygląda to raczej mało estetyczne.

     

    Oto fragment kodu "DRAW" odpowiedzialny za owe akcje:

     

    GML
    draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5)

    if ( shoot == true )

    {

    if ( ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0 and shoot=false )

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha)

     

    else

    draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

    else

    draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha)

    }

     

    Gdzie jest błąd?

  7. Mam nadzieję że administracja wybaczy trippleposta, ale niestety, nadal problem z kolizją, pocisk ma smugę, sprite(niewidoczny) rozmiar 16x16, nadal potrafi przelecieć przez ścianę 32x16. Co można z tym zrobić ? Dodam, że step pocisku zawiera:

    GML
    collision = collision_line( xprevious, yprevious, x, y,sciana_parent, true, true );

    if( collision != noone ) {

    event_perform( ev_collision, collision.object_index );

     

    with( collision ) {

    event_perform( ev_collision, other.object_index );

    }

    }

    Nie mam już pomysłu...

     

    @Edit, sory, zamknijcie ten temat w cholerę, naprawiłem to już...

  8. Witam, długo się z tym siłowałem, ale nie ma rezultatu. Potrzebuję dwóch tekstur, podrzucam grafikę postaci jako wzór:

    boh_dubelt_wka_idzie.png

     

    Numer 1. Potrzeba, aby postać trzymała granat nad głową, tak jakby miałaby zaraz rzucić.

    Numer 2 Klatka, kiedy już rzuca(moment kiedy łapa jest wyprostowana i puszcza)

     

    Wszystko poprosiłbym zrobić pod tę postać.

    Dzięki i pozdro :)

  9. Na starcie powiem, że SZUKAŁEM na forum rozwiązania, ale takowego nie znalazłem.

    W prostych słowach, utworzyłem sobie o_dach, który po zetknięciu z bohaterem staje się niewidoczny, co by móc budynek eksplorować.

    Problem polega na tym, że ów dach znika tylko częściowo, to znaczy, że znikają te kafelki, z którymi bezpośrednio styka się gracz, a mnie chodzi o to, żeby powiedzmy w chwili kolizji znikały wszystkie obiekty tego typu w promieniu, dajmy na to 500 pikseli. Jak wiadomo po opuszczeniu budy (kończeniu kolizji) dach powinien pojawić się znów.

     

    Oto kod ze STEP dachu(parenta):

     

    GML
    visible = !place_meeting(x,y,o_gracz);
  10. Pierdoła, ale nie mam pomysłu, szukałem, ale nie znalazłem.

    Chodzi o dach Top-Down, ustawiłem parenta, co by nie robić wszystkiego osobno, problem polega na tym, że kiedy wchodzę w interakcję w dachem znika tylko część na której stoję(składa się z kafelków 32x32, a ja chcę żeby znikały wszystkie po wejściu. Oto kod:

    GML
    if (place_meeting(x,y,o_gracz))

    visible=false;

    else

    visible=true;

  11. Tak też zrobiłem, nadal nic, oto kod z GLB

     

    GML
    if celowanie=true{

    // strzelanie

    _len = sprite_get_width( sprite_bron[ bron ] ) - sprite_get_xoffset( sprite_bron[ bron ] ) //odległosć w której zostanie stworzony pocisk

    _x = lengthdir_x( _len , direction )

    _y = lengthdir_y( _len , direction )

     

    if ( ammo_wmagazynku[ bron ] > 0 and can and laduj )

    {

    i = instance_create( x + _x , y + _y , pocisk_typ[ bron ] ) //tworzymy pocisk

    i. direction = direction // nadajemy mu cechy

    i. image_angle = direction

    i. sprite_index = bullet_sprite[ bron ]

    i. speed = bullet_speed[ bron ]

    i. damage = weapon_damage[ bron ]

    ammo_wmagazynku[ bron ] -= 1 // odejmujemy od stanu amunicja aktywnej broni 1

    can = false

    alarm[ 0 ] = weapon_time[ bron ]

    sound_play ( weapon_sound[ bron ] )

    shoot = true

    alarm[ 2 ] = sprite_get_number( sprite_strzal[ bron ]) *1

    image_index = 0

    }

    if celowanie=true{

    alarm [ 3 ] = sprite_get_number(sprite_trzyma[ bron ]) *150

    trzyma=false}

    }

     

     

    celowanie = true

  12. Siemanko, coś tam sobie tworzę w tak zwanym międzyczasie, ale natknąłem się na przeszkody.

     

    Numer 1.

     

    Postać tworzy pocisk, jak wiadomo, żeby trafić, musi być szybki, niestety, ustawiłem prędkość lotu na 60(wolniej nie da rady), ale mimo ewidentnej kolizji z celem, nie zawsze jest wykonywana akcja, dlaczego ? Odznaczyłem precyzyjną kolizję, kula otrzymała również maskę większą od sprite (rozmiar nominalny pocisku 2x1).

     

    Numer 2.

     

    Postać trzyma broń, ale nie celuje, opuszczanie broni itp już ogarnąłem, ale mam inny kłopot. Za akcję strzelana odpowiada standardowo lewy myszy, ale chcę zrobić, aby pierwsze kliknięcie wywołało akcję celowania (czyli jest na true) a dopiero drugie (przed upływem alarmu) na oddanie strzału, niestety głowiłem się nad tym sporo, ale za każdym razem przy pierwszym kliknięciu postać od razu strzela(menda). W akcji lewy myszy jest ustawione że celuje = true a potem że jeśli celowanie true to wszystko co ze strzelaniem związane (osobne kody)

    Co robię źle? Pozdro :)

×
×
  • Dodaj nową pozycję...