Skocz do zawartości

Przesuwanie objektu


Rekomendowane odpowiedzi

Nie wiem wprawdzie co to jest "sokoban" ale wiem jak mozna przesunac skrzynke.

Po wcisnieciu strzalki w bok mogą sie wykonac 3 rzeczy :

 

1) pozycja obok gracza jest pusta i postac sie przesunie

2) pozycja obok gracza jest zajeta, stoi tam skrzynka ale dalej nic nie ma wiec gracz przesunie skrzynke

3) pozycja obok gracza jest zajeta, obok stoi skrzynka ktorej jednak nie da sie przesunąc bo nie ma gdzie...

 

3 mozliwosci = 3 warunki. Sprawdzasz czy pozycja na ktorą chcesz sie przesunac jest wolna.. jesli tak to przesuwazs jesli sie to sprawdzasz dalej ( pierwszy if ) jesli to co zajmuje miejsce to skrzynka to sprawdzamy co stoi za skrzynką jesli nie to nie przesuwamy postaci ( drugi if ) i na koniec jesli za skrzynką nie bylo nic to przesuwamy siebie i skrzynke. Jasne ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

create bohatera:

przesuwaj = false; // nie jestesmy w trakcie przesuwania

 

No i teraz w jakims zdarzeniu, skrypcie inicjujacym takiec cos: // czyli po wcisnieciu strzalki B)

if (przesuwaj == false) // jesli nie jestesmy w trakcie przesuwania

{

alarm[0]=1; // za chwile bedziemy wykonywac alarm

piksele=32; // ile pixeli w sumie sie przesuniemy

przesuwaj = true; // zaczynamy sie przesuwac

kierunek = 0; // w kierunku 0 czyli w prawo ale tu dla kazdej strzalki bedzie inaczej

}

 

Za kierunek podstawiasz 0/1/2/3 zaleznie od strony, w ktora ma sie przesunac skrzynka.

 

alarm[0]:

if ( piksele > 0 ) // jesli nie przeszlismy przez dlugosc calej kratki

{

piksele -=1; // zmniejszamy petle o 1

alarm[0]=1; // inicjujemy kolejną klatke

switch (kierunek) // przesuwamy sie o 1 pixel w odpowiednia strone

{

case 0: x+=1; break; // prawo

case 1: y-=1; break; // gora

case 2: x-=1; break; // lewp

case 3: y+=1; break; // dol

}

else

{

przesuwaj=false; // jesli to juz cala kratka to dalej sie nie przesuwamy

}

 

Skrypt nie bierze pod uwage obecnosci skrzynki. Jest to tylko sposob na plynne przesuniecie postaci o x pixeli w daną stronę ( i to dosc nietypowy jak dla mnie przyklad ;) )

Edytowane przez Choosen
Odnośnik do komentarza
Udostępnij na innych stronach

Mam pewien problem, bo jak tak zrobilem to pacman przez skrzynke mi przechodzi, a pozatym to jak ide np nim w prawo to pozniej cala kratke dalej mi idzie (chyba to jest od tego piksele > 0). Ten kodzik dałem do bohatera czyli pacmana. Wiec jak mam zrobic aby dobrze dzialalo?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak mi sie wydaje że mógł byś spróbować tak w kolizji z obiektem który ma być przesunięty :

 

{

if keyboard_check(vk_left) { with (other) {x-=5}}

if keyboard_check(vk_right) { with (other) {x+=5}}

if keyboard_check(vk_up) { with (other) {y-=5}}

if keyboard_check(vk_down) { with (other) {y+=5}}

}

 

:huh:

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