Skocz do zawartości

Skaczący przeciwnik


Rekomendowane odpowiedzi

Przeciwnik ma za zadanie stać w miejscu i skakać i na początku wszystko działa ale po około 20 sekundach przestaje skakać i stoi w miejscu (animacja wciąż trwa).

 

kod wygląda tak

[Create]

skok = choose(1,2,3);

if skok = 1 then image_index = 0;

if skok = 2 then image_index = 1;

if skok = 3 then image_index = 2;

image_speed = 0.05;

friction = 0.28;

 

[step]

if image_index = 1 then vspeed = -12;

 

if place_meeting(x,y-3,object1)

{

effect_create_below(ef_explosion,x,y,2,c_black)

instance_destroy()

with(object1) vspeed = -7;

}

 

oraz w Step jest użyte 5 klocków które chętnie bym przeniósł do kodu (pochodzą z pewnego poradnika)

Start of a block

set the vertical speed 0.6 relative

check collission x = 0 y = vspeed, only solid, relative

set the vertical speed 0

End of a block

Odnośnik do komentarza
Udostępnij na innych stronach

zobacz czy zadziała if round(image_index) = 1

albo nawet chyba lepiej będzie tak:

if ( image_index > 1-image_speed && image_index <= 1+image_speed )

 

Start of a block

set the vertical speed 0.6 relative

check collission x = 0 y = vspeed, only solid, relative

set the vertical speed 0

End of a block

 

Prawdopodobnie to będzie coś takiego ale nie dam głowy uciąć bo z klocków korzystałem 15 lat temu :P

GML
vspeed += 0.6;

if ( place_free(x, y+vspeed) )

{

vspeed = 0;

}

Odnośnik do komentarza
Udostępnij na innych stronach

zobacz czy zadziała if round(image_index) = 1

albo nawet chyba lepiej będzie tak:

if ( image_index > 1-image_speed && image_index <= 1+image_speed )

 

 

 

Prawdopodobnie to będzie coś takiego ale nie dam głowy uciąć bo z klocków korzystałem 15 lat temu :P

GMLvspeed += 0.6;

if ( place_free(x, y+vspeed) )

{

vspeed = 0;

}

 

niestety nie działa to ale te klocki dają grawitacje, (zwykła coś mi dziwnie działa ale jeszcze popróbuję może się uda) a bardziej mi chodzi o to czemu po chwili przeciwnik przestaje skakać

Odnośnik do komentarza
Udostępnij na innych stronach

Nie zadziałało to co napisałem wyżej?

 

tak to miało wyglądać:

GML
if ( round(image_index) = 1 ) then vspeed = -12;

if place_meeting(x,y-3,object1)

{

effect_create_below(ef_explosion,x,y,2,c_black)

instance_destroy()

with(object1) vspeed = -7;

}

 

albo tak:

 

GML
if ( image_index > 1-image_speed && image_index <= 1+image_speed ) then vspeed = -12;

if place_meeting(x,y-3,object1)

{

effect_create_below(ef_explosion,x,y,2,c_black)

instance_destroy()

with(object1) vspeed = -7;

}

Odnośnik do komentarza
Udostępnij na innych stronach

Nie zadziałało to co napisałem wyżej?

 

tak to miało wyglądać:

GMLif ( round(image_index) = 1 ) then vspeed = -12;

if place_meeting(x,y-3,object1)

{

effect_create_below(ef_explosion,x,y,2,c_black)

instance_destroy()

with(object1) vspeed = -7;

}

 

albo tak:

 

GMLif ( image_index > 1-image_speed && image_index <= 1+image_speed ) then vspeed = -12;

if place_meeting(x,y-3,object1)

{

effect_create_below(ef_explosion,x,y,2,c_black)

instance_destroy()

with(object1) vspeed = -7;

}

 

zadziałało to

 

GML
if ( image_index > 1-image_speed && image_index <= 1+image_speed ) then vspeed = -12;

if place_meeting(x,y-3,object1)

{

effect_create_below(ef_explosion,x,y,2,c_black)

instance_destroy()

with(object1) vspeed = -7;

}

 

mógłbyś mi teraz wytłumaczyć dokładnie działanie tej linijki if ( image_index > 1-image_speed && image_index <= 1+image_speed ) then vspeed = -12; i czemu moja wersja po chwili się psuła, i czy chcesz aby cię umieścić w twórcach w przedziale ,,podziękowania dla"?

Odnośnik do komentarza
Udostępnij na innych stronach

Psuło się bo image_index zaczęło przyjmować wartości zmienno-przecinkowe ze względu na zmianę image_speed

W pewnym momencie image_index zaczęło przeskakiwać przez wartość image_index == 1 z twojego warunku. No więc trzeba było rozszerzyć to tak by nie sprawdzał konkretnej liczby a zamiast tego zakres.

Zakres od image_index-image_speed do image_index+image_speed; Wtedy jest pewność że warunek się spełni i nie przeskoczy przez twoją żądaną jedynkę.

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