Skocz do zawartości

jak ustawić idealnie pocisk


Rekomendowane odpowiedzi

Cześć wszystkim..

mój wróg jak strzela,to pocisk ,który wydobywa się z prawej strony idealnie wydobywa się z lufy wroga,natomiast ten z lewej już nie...

Próbuje to ustawić,ale jak ustawiam,to całkowicie mi wtedy wróg się zatrzymuje i dalej źle strzela..

to mam ustawione

instance_create( x+25, y-15, obj_laser)

 

ale nie wiem jak ustawić

 

instance_create( x-25, y+15, obj_laser)

 

wtedy idealnie zarówno z prawej jak i z lewej strony strzelałby pocisk z lufy wroga..

 

 

tu kod wroga

 

step

 

GML
var stopped;

stopped=0;

 

 

//image_angle = direction;

if distance_to_object(obj_player) <=80

 

{

//stopped=1;

speed=0;

//image_speed=0

if (obj_player.x>x) && (obj_player.y>y) image_xscale=1;

 

else if (obj_player.x<x) && (obj_player.y<y) image_xscale=-1;

//if( abs(obj_player.y - y) < 80 && abs(obj_player.y - y) < 80)

if ( strzal )

{

var i;

 

i = instance_create( x+25, y-15, obj_laser)

 

i.speed = 7;

 

i.hspeed=image_xscale*7;

 

 

strzal = 0;

 

alarm[0]=room_speed*1.5

}

}

 

else

{

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_platforma)) x+=image_xscale*5;

speed=4;

}

 

 

 

if place_free(x,y+1)

{gravity = 0.5}

else

{gravity = 0}

 

if at=1

{

at=2

speed=4

}

 

if at=2

{

if hspeed<0

{

image_xscale = -1;

if !place_meeting(x-30,y+10,par_platforma )

speed*=-1

else if place_meeting(x-1,y,par_platforma )

speed*=-1

st=1

}

 

else if hspeed>0

{

image_xscale = 1;

if !place_meeting(x+30,y+10,par_platforma )

speed*=-1

else if place_meeting(x+1,y,par_platforma )

speed*=-1

st=2

}

}

 

 

//Obrazenia wroga

if global.zegarObrazenWroga > 0 {

visible = !visible;

global.zegarObrazenWroga -= 1;

} else {

visible = true;

}

 

 

 

 

if hp <= 0 {

instance_destroy();

 

dead = true; //wywolujemy alarm gdy wrog jest martwy

//tworzy napis i losowa ilosc punktow nad wrogiem

global.pScore+=pointvalue

z = instance_create(x,y-10,obj_floating_txt);

z.txt = "$" + string(pointvalue);

z.yspeed = -4;

 

 

 

with instance_create(x,y,obj_entity_die) with instance_create(x,y,obj_czolgista_ginie) {

image_xscale = other.image_xscale;

image_yscale = other.image_yscale;

hspd = other.hspd;

vspd = other.vspd;

audio_play_sound(dzwiek_wrog_ginie, 1, false);

}

if (stopped)

hspd=0;

 

 

// czasowe wskrzeszenie wroga

if (dead == true)

{

instance_create(x,y,obj_spawn_czolgista);

}

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast y-15 użyj y+15*image_xscale. Wtedy gdy xscale jest równe -1, postać obróci się w lewo i pocisk pojawi się na lewo od postaci, podobnie dla xscale=1.

Jeżeli działa odwrotnie, niż powinno, zmień na y-15*image_xscale

 

BARDZO PÓŹNY EDIT (02:53): jestem kretynem, chodziło mi o x+25*image_xscale zamiast 15*image_xscale, co się ze mną dzieje D:

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast y-15 użyj y+15*image_xscale. Wtedy gdy xscale jest równe -1, postać obróci się w lewo i pocisk pojawi się na lewo od postaci, podobnie dla xscale=1.

Jeżeli działa odwrotnie, niż powinno, zmień na y-15*image_xscale

 

 

GML
i = instance_create( x+25, y-15*image_xscale, obj_laserek )

 

o to chodziło? ale to nic nie daje..zmiana y+15 również..i z dziwnej strony wtedy pocisk leci...

 

Odnośnik do komentarza
Udostępnij na innych stronach

image_xscale w twoim przypadku jest 1 jak patrzysz w prawo, albo -1 jak w lewo.

Jeśli chcesz żeby pocisk stworzył się po prawej stronie, to do x dodajesz 15. x+15.

Jeśli chcesz żeby pocisk stworzył się po lewej stronie, to od x odejmujesz 15. x-15;

Tak więc, można to zrobić tak

GML
if(image_xscale==1)

var miejsce_x=x+15;

if(image_xscale==-1)

var miejsce_x=x-15;

Ale tak oczywiście nie będziemy robili, skracamy to do prościutkiej matematyki

GML
var miejsce_x=x+(image_xscale*15);

To nie ma prawa nie działać xd

Odnośnik do komentarza
Udostępnij na innych stronach

image_xscale w twoim przypadku jest 1 jak patrzysz w prawo, albo -1 jak w lewo.

Jeśli chcesz żeby pocisk stworzył się po prawej stronie, to do x dodajesz 15. x+15.

Jeśli chcesz żeby pocisk stworzył się po lewej stronie, to od x odejmujesz 15. x-15;

Tak więc, można to zrobić tak

GMLif(image_xscale==1)

var miejsce_x=x+15;

if(image_xscale==-1)

var miejsce_x=x-15;

Ale tak oczywiście nie będziemy robili, skracamy to do prościutkiej matematyki

GMLvar miejsce_x=x+(image_xscale*15);

To nie ma prawa nie działać xd

 

 

a więc tak to zrobiłem...

dodałem tak:

 

GML
var miejsce_x;

var miejsce_x=x+(image_xscale*15);

 

teraz to tak wygląda,ale nadal jak w lewo strzela to nie z lufy laser.

 

 

GML
var stopped;

stopped=0;

 

 

//image_angle = direction;

if distance_to_object(obj_player) <=80

 

{

//stopped=1;

speed=0;

 

 

if (obj_player.x>x) && (obj_player.y>y) image_xscale=1;

 

else if (obj_player.x<x) && (obj_player.y<y) image_xscale=-1;

//if( abs(obj_player.y - y) < 80 && abs(obj_player.y - y) < 80)

if ( strzal )

{

var i;

var miejsce_x;

var miejsce_x=x+(image_xscale*15);

i = instance_create( x+25, y-15, obj_laser)

 

i.speed = 7;

 

i.hspeed=image_xscale*7;

 

strzal = 0;

 

alarm[0]=room_speed*1.5

}

}

 

else

{

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_podloze)) x+=image_xscale*5;

speed=4;

}

 

 

 

if place_free(x,y+1)

{gravity = 0.5}

else

{gravity = 0}

 

if at=1

{

at=2

speed=4

}

 

if at=2

{

if hspeed<0

{

image_xscale = -1;

if !place_meeting(x-30,y+10,par_podloze )

speed*=-1

else if place_meeting(x-1,y,par_podloze )

speed*=-1

st=1

}

 

else if hspeed>0

{

image_xscale = 1;

if !place_meeting(x+30,y+10,par_podloze )

speed*=-1

else if place_meeting(x+1,y,par_podloze )

speed*=-1

st=2

}

}

 

 

//Obrazenia wroga

if global.zegarObrazenWroga > 0 {

visible = !visible;

global.zegarObrazenWroga -= 1;

} else {

visible = true;

}

 

 

 

 

if hp <= 0 {

instance_destroy();

 

dead = true; //wywolujemy alarm gdy wrog jest martwy

//tworzy napis i losowa ilosc punktow nad wrogiem

global.pScore+=pointvalue

z = instance_create(x,y-10,obj_floating_txt);

z.txt = "$" + string(pointvalue);

z.yspeed = -4;

 

 

 

with instance_create(x,y,obj_entity_die) with instance_create(x,y,obj_czolgista_ginie) {

 

image_xscale = other.image_xscale;

image_yscale = other.image_yscale;

hspd = other.hspd;

vspd = other.vspd;

audio_play_sound(dzwiek_wrog_ginie, 1, false); //odtwarzamy dzwiek przy smierci wroga

}

}

if (stopped)

hspd=0;

 

 

// czasowy wskrzeszanie wroga

if (dead == true)

{

 

 

instance_create(x,y,obj_spawn_czolgista);

}

Odnośnik do komentarza
Udostępnij na innych stronach

tym miejsce_x, chciałem tylko pokazać o co mi chodzi

GML
var i;

var miejsce_x;

var miejsce_x=x+(image_xscale*15);

i = instance_create( x+25, y-15, obj_laser)

Tworzysz zmienną miejsce_x, ale co z tego, jak nic z nią nie robisz xd

Ostatecznie powinno to wyglądać tak

GML
i = instance_create( x+(image_xscale*15), y-15, obj_laser)

Musisz analizować kod, a nie tylko kopiować.

Odnośnik do komentarza
Udostępnij na innych stronach

tym miejsce_x, chciałem tylko pokazać o co mi chodzi

GMLvar i;

var miejsce_x;

var miejsce_x=x+(image_xscale*15);

i = instance_create( x+25, y-15, obj_laser)

Tworzysz zmienną miejsce_x, ale co z tego, jak nic z nią nie robisz xd

Ostatecznie powinno to wyglądać tak

GMLi = instance_create( x+(image_xscale*15), y-15, obj_laser)

Musisz analizować kod, a nie tylko kopiować.

 

Dzięki Sutikku..analizuje,tylko w błąd mnie wprowadziło użycie y-15 zamiast x,bo przecież lufa od mojego czołgu nie strzela góra dół,tylko lewo prawo;) teraz jest idealnie.

 

Mam jeszcze jedno pytanie..bo walczę z ustawieniem kątów,tzn chodzi mi,że jak jestem np na wyższej platformie i pode mną jest ten wróg czołgista..i on zaczyna strzelać mimo,że nie widzi mnie..

Wolałbym,żeby strzelał jak znajdę się w jego zasięgu w pozycji X

Nie wiem,czy użyć colission_line czy innej funkcji.

Po prostu niech wróg mnie wykrywa dopiero jak będę w pozycji x a nie y

Odnośnik do komentarza
Udostępnij na innych stronach

Napisałem Ci jeszcze przed Twoim postem, że używasz złej pozycji :P

Użyj collision_line, lub sprawdzaj sobie y gracza. coś jak:

GML
if abs(y-obj_gracz.y)<20{

//Kod

}

Abs działa na zasadzie, że zawsze zwraca Ci wartość dodatnią jakbyś nie wiedział ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Sposobów jest wiele. Pierwszy i chyba najłatwiejszy

GML
if(y=obj_player.y)//warunek wykrycia

{

//reszta kodu, po wykryciu

}

Z tym, że wystarczy, że gracz podskoczy i już nie wykrywa.

GML
if(abs(y-obj_player.y)<32)

{

//reszta kodu, po wykryciu

}

W tym momencie, nawet jeśli podskoczymy, to będziemy wykrywani (chyba, że wyskoczymy wyżej niż 32 piksele)

Możemy to zmienić dodając jeden warunek

GML
if(abs(y-obj_player.y)<32)

if(obj_player.y>=y)

{

//reszta kodu, po wykryciu

}

W tym momencie, sprawdzamy czy odległość y jest mniejsza od 32, a potem sprawdzamy czy gracz nie jest pod wrogiem.

Chociaż ostatecznie najlepszym sposobem byłoby if(collision_line), to napisałem Ci różne sposoby, tak wiesz, w celach edukacyjnych ;d

edit: Gibki, ciągle się mijamy i piszemy praktycznie to samo xd

Odnośnik do komentarza
Udostępnij na innych stronach

Sposobów jest wiele. Pierwszy i chyba najłatwiejszy

GMLif(y=obj_player.y)//warunek wykrycia

{

//reszta kodu, po wykryciu

}

Z tym, że wystarczy, że gracz podskoczy i już nie wykrywa.

GMLif(abs(y-obj_player.y)<32)

{

//reszta kodu, po wykryciu

}

W tym momencie, nawet jeśli podskoczymy, to będziemy wykrywani (chyba, że wyskoczymy wyżej niż 32 piksele)

Możemy to zmienić dodając jeden warunek

GMLif(abs(y-obj_player.y)<32)

if(obj_player.y>=y)

{

//reszta kodu, po wykryciu

}

W tym momencie, sprawdzamy czy odległość y jest mniejsza od 32, a potem sprawdzamy czy gracz nie jest pod wrogiem.

Chociaż ostatecznie najlepszym sposobem byłoby if(collision_line), to napisałem Ci różne sposoby, tak wiesz, w celach edukacyjnych ;d

edit: Gibki, ciągle się mijamy i piszemy praktycznie to samo xd

 

Serdeczne dzięki chłopaki za ładny opis;)

 

czyli zamierzony cel osiągnę w taki sposób

 

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32)

if(obj_player.y>=y)

{

i tu reszta kodu

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, racja Suttiku, jednakże co do Twojego ostatniego kodu to nie łatwiej zmienić go do jednego warunku?

GML
if(y-obj_player.y>y-32 && obj_player.y<=y)

{

//reszta kodu, po wykryciu

}

 

A i tak drugi warunek napisałeś na odwrót. Jeśli gracz podskoczy, to jego y jest mniejszy, czyli musi mieć mniej niż y przeciwnika.

 

I błagam, jak piszesz dwa ify, to dawaj wszędzie klamry.

Odnośnik do komentarza
Udostępnij na innych stronach

byłoby łatwiej, ale sam nie wiedziałem czy autor tematu wie jak to jest z tymi podwójnymi warunkami (chociaż jak teraz patrzę na cały kod, to sam tego używa, to nie byłoby problemu)

Ale ogólnie już się przestawiłem na &&, zamiast dwóch warunków c;

Odnośnik do komentarza
Udostępnij na innych stronach

byłoby łatwiej, ale sam nie wiedziałem czy autor tematu wie jak to jest z tymi podwójnymi warunkami (chociaż jak teraz patrzę na cały kod, to sam tego używa, to nie byłoby problemu)

Ale ogólnie już się przestawiłem na &&, zamiast dwóch warunków c;

 

 

 

Czy to tak przypadkiem nie ma być chłopaki?

Kaktus Twoje rozwiązanie nie działa prawidłowo.

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

}

reszta kodu

{

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if(y-obj_player.y<32 && obj_player.y<=y)

{

//reszta kodu, po wykryciu

}

 

O tak powinno być, sorki za błąd.

Możesz też użyć absu, ale tutaj nie ma to większego sensu, ponieważ Ci zależy tylko, jeśli gracz będzie nad Tobą(drugi warunek o tym świadczy).

Odnośnik do komentarza
Udostępnij na innych stronach

GMLif(y-obj_player.y<32 && obj_player.y<=y)

{

//reszta kodu, po wykryciu

}

 

O tak powinno być, sorki za błąd.

Możesz też użyć absu, ale tutaj nie ma to większego sensu, ponieważ Ci zależy tylko, jeśli gracz będzie nad Tobą(drugi warunek o tym świadczy).

 

W porządku;)

Ale jednak Kaktusie musi być te rozwiązanie od Sutikku,bo te od Ciebie nie działa prawidłowo,tzn wróg całkowicie już przestaje nas widzieć i strzelać..

No nic ważne,że działa jeszcze raz dzięki;)

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

}

reszta kodu

{

 

 

 

Jeszcze ostatnie pytanie mam,bo próbuje w kodzie ustawić zmiane sprita na sprita ataku wroga jak zbliży się mój bohater do niego..to wróg zmieni sprita na sprita ataku i zacznie strzelać,a jak się oddale poza jego dystans,to powróci do pierwotnego sprita..

 

 

step wroga

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

//if(y-obj_player.y<32 && obj_player.y<=y)

{

sprite_index = spr_czolgista_atakuje;

}

else

{

sprite_index = spr_czolgista;

 

speed=0;

 

 

if (obj_player.x>x) && (obj_player.y>y) image_xscale=1;

 

else if (obj_player.x<x) && (obj_player.y<y) image_xscale=-1;

 

if ( strzal )

{

var i;

var miejsce_x;

i = instance_create( x+(image_xscale*25), y-15, obj_laser)

i.speed = 7;

 

i.hspeed=image_xscale*7;

 

strzal = 0;

 

alarm[0]=room_speed*1.5

}

}

}

else

{

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_podloze)) x+=image_xscale*5;

speed=4;

}

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if (obj_player.x>x) && (obj_player.y>y) image_xscale=1;

 

else if (obj_player.x<x) && (obj_player.y<y) image_xscale=-1;

Po co masz tutaj pozycje y? To nie będzie działało sprawnie, ponieważ będzie obrócony w prawo, jeśli x i y bohatera jest większe od wroga, a w lewo, jeśli x i y bohatera będzie mniejsze od wroga. Czyli w jednym przypadku będzie się zmieniało tylko, jeśli gracz jest nad wrogiem a w drugim jeśli jest pod wrogiem.

 

I druga sprawa masz napisane warunki na odwrót. W sensie, że jeśli gracz jest na lini ostrzału, to czołg ma mieć sprite czołgisty i nic nie robić, a jeśli gracz nie będzie na tejże lini, to wtedy ma atakować.

Odnośnik do komentarza
Udostępnij na innych stronach

Kaktusie jak dam warunki odwrotnie plus Twoje rozwiązane, to wiesz mi nic się nie dzieje..wróg wcale nie reaguje na gracza..tylko sobie jeździ nie strzela

 

 

jak mam w taki sposób jak niżej,to wróg wykrywa gracza...zatrzymuje się i strzela..

 

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

//if(y-obj_player.y<32 && obj_player.y<=y)

{

speed=0;

 

if (obj_player.x>x) && (obj_player.y>y) image_xscale=1;

 

else if (obj_player.x<x) && (obj_player.y<y) image_xscale=-1;

 

 

//tu reszta kodu

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Usuń te pozycje y z warunków co do image_xscale.

No to chyba działa, czy jak Ty chcesz? Żeby dalej jeździł, czy co?

 

 

Kaktusie działa idealnie ..faktycznie Y powodowały to,że wróg z opóźnieniem czasem obracał się w stronę gracza i strzelał.teraz reaguje błyskawicznie,czy to jest z lewej,czy z prawej strony..

 

 

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

//if(y-obj_player.y<32 && obj_player.y<=y)

{

 

speed=0;

 

if (obj_player.x>x) image_xscale=1;

 

else if (obj_player.x<x) image_xscale=-1;

 

 

 

//reszta kodu

 

 

 

Czyli tu nie da się zmienić sprita czołgisty na sprita ataku jak znajdę się w zasięgu czołgisty? i potem jak oddale się z tego zasięgu,to powróci czołgista do pierwotnego sprita?

Odnośnik do komentarza
Udostępnij na innych stronach

Jak to nie? Napisz po prostu sprite_index=cos tam gdzie ma być :P

Tj atak, jeśli jest w zasięgu i zwykły gdy nie jest w zasięgu.

 

 

I nie działało z opóźnieniem, tylko niekiedy wgl nie działało :P

 

 

Kaktusie jestem Ci wdzięczy za tą radę;)

 

co do zmiany sprita na atakującego udało mi się,ale nie wiem,gdzie wstawić po jakim warunku,że jak się już oddale od wroga,to żeby zmienił się z powrotem na sprita normalnego...

obecnie tak to wygląda

 

 

 

step wroga

 

 

GML
if distance_to_object(obj_player) <=80

 

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

 

{

sprite_index = spr_czolgista_atakuje;//to dziala i czolgista jak mnie widzi zmienia sprita na atakujacego

speed=0;

 

if (obj_player.x>x) image_xscale=1;

 

else if (obj_player.x<x) image_xscale=-1;

 

if ( strzal )

{

var i;

var miejsce_x;

i = instance_create( x+(image_xscale*25), y-15, obj_laser)

i.speed = 7;

 

i.hspeed=image_xscale*7;

 

strzal = 0;

 

alarm[0]=room_speed*1.5

}

}

}

else

{

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_podloze)) x+=image_xscale*5;

speed=4;

 

}

 

//dalsza czesc kodu

Odnośnik do komentarza
Udostępnij na innych stronach

Masz do wyboru else po dwóch warunkach:

GML
if distance_to_object(obj_player) <=80

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

{

}else{

//Warunek 2

}

}else{

//Warunek 1

}

 

I teraz sprawa wygląda następująco:

Jeśli dasz w Warunku 1, to będzie zmieniał się na zwykłego czołgistę, jeśli gracz się za bardzo oddali.

Jeśli dasz w Warunku 2, to będzie zmieniał się na zwykłego czołgistę, jeśli nie będzie na linii strzału(idealnie, tak?), ale jest taki myk, że jeśli gracz oddali się od czołgisty o ponad 80 pix będąc cały czas na linii strzału, to wtedy cały czas pozostanie w sprite ataku.

Jakie jest rozwiązanie? Połącz te warunki, bo i tak one służą w tym samym celu ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Masz do wyboru else po dwóch warunkach:

GMLif distance_to_object(obj_player) <=80

{

if(abs(y-obj_player.y)<32) && (obj_player.y>=y)

{

}else{

//Warunek 2

}

}else{

//Warunek 1

}

 

I teraz sprawa wygląda następująco:

Jeśli dasz w Warunku 1, to będzie zmieniał się na zwykłego czołgistę, jeśli gracz się za bardzo oddali.

Jeśli dasz w Warunku 2, to będzie zmieniał się na zwykłego czołgistę, jeśli nie będzie na linii strzału(idealnie, tak?), ale jest taki myk, że jeśli gracz oddali się od czołgisty o ponad 80 pix będąc cały czas na linii strzału, to wtedy cały czas pozostanie w sprite ataku.

Jakie jest rozwiązanie? Połącz te warunki, bo i tak one służą w tym samym celu ;)

 

 

 

Czyli w warunku;) musze uwzględnić..że jak bohater oddali się na odpowiednią odległość,to sprite wroga czolgisty ataku powroci do pierwotnego stanu;)?

 

 

GML
if distance_to_object(obj_player) <=80 //jak nas widzi

if distance_to_object(obj_player) > 100 //jak nas juz nie widzi
Odnośnik do komentarza
Udostępnij na innych stronach

GML
if distance_to_object(obj_player) <=80 && (abs(y-obj_player.y)<32) && (obj_player.y>=y){

//Sprite atakującego czołgisty i atak cały

}else{

//Srpite czołgisty i to co ma robić jak nie jest w trakcie ostrzału

}

 

Źle, że napisałem tam warunek. Chodziło mi o to, że to się odnosi do else warunku który już masz :P

Odnośnik do komentarza
Udostępnij na innych stronach

GMLif distance_to_object(obj_player) <=80 && (abs(y-obj_player.y)<32) && (obj_player.y>=y){

//Sprite atakującego czołgisty i atak cały

}else{

//Srpite czołgisty i to co ma robić jak nie jest w trakcie ostrzału

}

 

Źle, że napisałem tam warunek. Chodziło mi o to, że to się odnosi do else warunku który już masz :P

 

 

Ja tak już wcześniej robiłem,ale czołgista zaczął wariować..cały czas strzela mimo,że mnie nie widzi;) te Kaktusiku niżej rozwiązanie nie jest dobre;)

 

 

GML
if distance_to_object(obj_player) <=80 && (abs(y-obj_player.y)<32) && (obj_player.y>=y){

sprite_index = spr_czolgista_atakuje;

}else{

sprite_index = spr_czolgista;

}

speed=0;

if (obj_player.x>x) image_xscale=1;

 

else if (obj_player.x<x) image_xscale=-1;

 

if ( strzal )

{

var i;

var miejsce_x;

i = instance_create( x+(image_xscale*25), y-15, obj_laser)

i.speed = 7;

 

i.hspeed=image_xscale*7;

 

strzal = 0;

 

alarm[0]=room_speed*1.5

}

else

{

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_podloze)) x+=image_xscale*5;

speed=4;

 

}

Odnośnik do komentarza
Udostępnij na innych stronach

Naucz się poprawnie stosować warunki :P

GML
if distance_to_object(obj_player) <=80 && (abs(y-obj_player.y)<32) && (obj_player.y>=y){

//TUTAJ CAŁY KOD NA STRZELANIE I SPRITE_INDEX ATAKU

}

else

{

sprite_index=spr_czolgista;

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_podloze)) x+=image_xscale*5;

speed=4;

 

}

Odnośnik do komentarza
Udostępnij na innych stronach

Naucz się poprawnie stosować warunki :P

GMLif distance_to_object(obj_player) <=80 && (abs(y-obj_player.y)<32) && (obj_player.y>=y){

//TUTAJ CAŁY KOD NA STRZELANIE I SPRITE_INDEX ATAKU

}

else

{

sprite_index=spr_czolgista;

if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2);

if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_podloze)) x+=image_xscale*5;

speed=4;

 

}

 

Dobrze nauczę się;) już się uczę;) działa jak należy ;)

jesteś niemożliwy Kaktusie;)

Powiedz mi jeszcze skąd u Ciebie pomysł na taką nazwę awatara?

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ę...