Skocz do zawartości

Dziwny problem z kodem


dexter19

Rekomendowane odpowiedzi

Witam

 

Dzisiaj znów zainteresowałem się Game Makerem i postanowiłem ulepszy jedną moją grę. Problem polega w tym:

 

Zmieniłem sterowanie i chciałem dodać poruszanie się na skos ale ten sam kod działa gdy idę w prawo i do góry ale już w lewo ido góry nie

Oto kod:

GML
if (keyboard_check(left))

{

x-=5

sprite_index=spr_explo_left

image_speed=0.2

};

 

if(keyboard_check(up))

{

x-=-1

y-=-1

sprite_index=spr_explo_left_up

image_speed=0.2

};

 

Tutaj jest jeszcze ruch podstawowy. Nie mam nic w step ponieważ nie sądzę by był potrzebny(ale pewnie się mylę)

Oczywiście ruch w prawo jest zmieniony.

PS. Używam GM8 (i nie piszcie mi że powinienem go zmieni).

Odnośnik do komentarza
Udostępnij na innych stronach

Mam to w w kliknięcie strzałki w lewo idlatego nieużywałem w kodzie kliknięcia razem z strzałką do góry ale i tak robiłem wiele kombinacji i żadna nie działa

Tutaj jest kod działający:

GML
if (keyboard_check(right))

{

x+=5

sprite_index=spr_explo_right

image_speed=0.2

};

 

if(keyboard_check(up))

{

x+=-1

y-=-1

sprite_index=spr_explo_right_up

image_speed=0.2

};

 

nie widze różnicy z tym poprzednim a i tak nie działa

Odnośnik do komentarza
Udostępnij na innych stronach

No właśnie robisz to bardzo źle. Bo gdy używasz eventu klawiszy to nie sprawdzaj potem wewnątrz kodu czy wcisnąłeś ten klawisz.

Zrób tak jak ja Ci poleciłem z "Any Key", a jak chcesz sprawdzić 2 lub więcej warunków na raz to używaj AND i OR. Np.:

GML
if (keyboard_check(right) AND keyboard_check(up))

{

//To wykona się tylko gdy klawisze prawo i góra będą naciśnięte na raz.

};

 

Ale prawdopodobnie nie musisz nawet sprawdzać takich warunków. Jeżeli zrobisz osobno poruszanie dla 4 kierunków to gra sama będzie działać przy skosach. Po prostu zrób to dobrze.

Odnośnik do komentarza
Udostępnij na innych stronach

Mieszało się bo namieszałeś. :D Ten kawałek kodu który pokazałeś w pierwszym poście jest dowodem na to że jest to jeden wielki bałagan. Pokaż wszystko co tyczy się poruszania, a na pewno pomożemy Ci zrobić to lepiej.

Wiem że Polacy są specjalistami od prowizorek, ale prowizorki z czasem się rozpadają.

Odnośnik do komentarza
Udostępnij na innych stronach

Proszę bardzo jest tego trochę:

 

Przycisk w lewo:

GML
if (keyboard_check(left))

{

x-=5

sprite_index=spr_explo_left

image_speed=0.2

};

 

if(keyboard_check(up)and(left) )

{

x-=-1

y-=-1

sprite_index=spr_explo_left_up

image_speed=0.2

};

 

if(keyboard_check(down)and(left) )

{

x-=0

y+=0

sprite_index=spr_explo_left_down

image_speed=0.2

};

 

Przycisk w lewo:

GML
if (keyboard_check(right))

{

x+=5

sprite_index=spr_explo_right

image_speed=0.2

};

 

if(keyboard_check(up)and(right))

{

x+=-1

y-=-1

sprite_index=spr_explo_right_up

image_speed=0.2

};

 

if(keyboard_check(down)and(right))

{

x+=0

y+=0

sprite_index=spr_explo_right_down

image_speed=0.2

};

 

Przycisk w góre:

GML
if(keyboard_check(up))

{

y-=5

sprite_index=spr_explo_up

image_speed=0.2;

}

 

if(keyboard_check(left) )

{

x-=0

y-=0

sprite_index=spr_explo_left_up

image_speed=0.2

};

 

Przycisk w dół:

GML
if(keyboard_check(down))

{

y+=5

sprite_index=spr_explo_down

image_speed=0.2;

};

 

 

if(keyboard_check(right))

{

x+=-1

y+=-1

sprite_index=spr_explo_right_down

image_speed=0.2

};

 

if(keyboard_check(left))

{

x-=-1

y+=-1

sprite_index=spr_explo_left_down

image_speed=0.2

};

 

Są jeszcze osobne eventy z puszczaniem przycisku, próbowałem przed chwilą dodac to do tych kodów ale nie działało więc jest tak jak jest.

Odnośnik do komentarza
Udostępnij na innych stronach

Na początek mam nadzieję że masz zainicjowane poprawnie zmienne up, down, left i right.

Po drugie, dopisanie czegoś takiego "keyboard_check(up)and(left)" nie sprawdza klawisza a tylko czy zmienna jest TRUE (a prawie zawsze będzie). Poprawnie jest: "keyboard_check(up) and keyboard_check(left)".

I po trzecie nie podejmę się napisania tego za Ciebie bo nie potrafię zrozumieć czegokolwiek z tego kodu (wtf y-=-1 xD) i nie wiem czy dam radę ale to Ci pomoże:

GML (Key any)
image_speed=0.2

if (keyboard_check(left))

{

x-=5

sprite_index=spr_explo_left

}

else if (keyboard_check(right))

{

x+=5

sprite_index=spr_explo_right

}

Odnośnik do komentarza
Udostępnij na innych stronach

I tak dzięki za pomoc a jeżeli chodzi ci ot to -y=-1 to chodziło o to że -y to odpowiada za szybkośc. Testowałem to i działa. Napisz jeżeli to jest dziwne, bo nie wiem. :)

 

EDIT. Spróbowałemz any key ale nadal nie do końca działa ale i tak dzięki za to :bye1:

Odnośnik do komentarza
Udostępnij na innych stronach

Any key wywoła się za każdym razem gdy naciśnięty zostanie jakikolwiek klawisz. Wtedy dopiero sprawdzasz jaki klawisz jest wciśnięty i wykonujesz akcję.

Wcześniej robiłeś coś głupiego czyli w evencie który sprawdzał naciśnięcie danego przycisku sprawdzałeś naciśniecie innych przycisków.

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