Skocz do zawartości
  • Ogłoszenia

  • Gdzie świętować urodziny GMCLANu   26 użytkowników zagłosowało

    1. 1. Gdzie świętować urodziny GMCLANu


      • Warszawa (bo w centrum)
      • Szczecin (bo tam mieszka Ranma i narodził się GMCLAN)

    Żeby zagłosować w tej ankiecie, prosimy się zalogować lub zarejestrować. Zobacz temat
  • 0
Estremo_PL

Skaczący przeciwnik

Pytanie

Estremo_PL    0

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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
I am Lord    13

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;

}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
Estremo_PL    0
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ć

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
I am Lord    13

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;

}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
Estremo_PL    0
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"?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
I am Lord    13

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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×