-
Postów
1 180 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
6
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez LolikZabijaka
-
-
Nie korzystam w ogóle z GMS, korzystam nadal z Ósemki, miałem długi przestój, nie jestem na bieżąco.
-
GMZ ? A cóż to za format ?
-
To znaczy ściany są pod kątem prostym wszystkie poustawiane, jednak okrągła maska chrzani wszystko.
-
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ą:
GMLx = xprevious y = yprevious -
Daj kod, to wtedy zobaczymy dlaczego się "trzensie" i Ci nie skacze xD
-
Tu może być też babol(po części sam tworzyłem część instancji) GLOB LEFT BUTTON
GMLif 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
-
A spróuj tak:GMLif 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) ?
-
Przykro mi, ale ciągle to samo, może podrzucę Wam cały kod z DRAW, może tam jeszcze jest gdzieś jakiś babol:
GMLif 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);
-
Chyba łapię, zmienne które stąd wywaliłeś nie są potrzebne przy DRAW
@EDIT - Nie ja pisałem ten silnik, autorem jest Marek.S
@EDIT II - Coś pochrzaniłeś, teraz już w ogóle nie rysuje mi strzału.
-
pierwsza linijka odpowiada za cień, wywaliłem i nic, a z nawiasu po wywaleniu pierwszej linijki warunku ze sprite_bron przestaje rysować sprite_strzal
-
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
-
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:
GMLdraw_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?
-
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:
GMLcollision = 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ż...
-
Witam, długo się z tym siłowałem, ale nie ma rezultatu. Potrzebuję dwóch tekstur, podrzucam grafikę postaci jako wzór:
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 :)
-
Przy nim czuła się jak w Bagdadzie, kochała pakistańskie disco, taaa! jeee! :D
-
No i po mistrzowsku, podziękował :D
-
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):
GMLvisible = !place_meeting(x,y,o_gracz); -
Nadałem im parent, jednak po sprawdzeniu waszych metod, nadal to samo, kod mam wpisać w step parenta, czy kafelka dachu ?
-
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:
GMLif (place_meeting(x,y,o_gracz))visible=false;
else
visible=true;
-
Dobra, rozgryzłem to, udało mi się to z robić ze zdarzeniem puszczenia klawisza myszy. Kilka godzin się z tym bujałem, ale ogarnąłem. Wszystko załatwione, dzięki Ujzel za podpowiedź ze smugą :)
-
Tak też zrobiłem, nadal nic, oto kod z GLB
GMLif 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
-
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 :)
-
Witam, czy ktoś mógłby mi wyjaśnić dlaczego dzieje się coś takiego i jak temu zapobiec? Dodam że budynek i to co było trawą pod nim, było zbudowane z titlesetów.
Pozdro
-
Koledzy sympatyczni, zezwalam na remake tej gry, jednak zastrzegam sobie prawo do tego, aby umieścić mnie w credits, jako pomysłodawce :) Pozdrawiam
Blokowanie się na pikselach
w Pytania początkujących
Opublikowano
Wywala jakiegoś buga w skrypcie.