Skocz do zawartości

Poruszanie się jak w heroes


ussnimitz

Rekomendowane odpowiedzi

jak przerobić przykład znajdowanie drogi z tąd: https://gmclan.org/index.php?pliki=4&s1...=DESC&s4=id

 

Chcę żeby w jednej turze mógł poruszać się tylko na odległość 20 ImgPoint a reszta były szare i dopiero w następnej turze były zielone i dopiero wtedy można byłoby iść dalej.

 

W każdym razie jak ktoś nie rozumie to chcę zrobić takie poruszanie jak na mapie w heroes.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie pamiętam dokładnie tego przykładu ale chyba on tworzył pętlą for te znaczniki.

Najprosciej będzie zrobic 2 taki znacznik(szary)

 

Teraz tworzysz sobie zmienna ktora bedzie oznaczala o ile znacznikow moze sie bohater przesunac np. zmienna=20;

teraz ta petle for zmieniasz tak by robila tyle zielonych ile jest w zmiennej. a gdy dojdzie do tych 20 to zeby reszte robila szarych.

potem dajesz w kolizji z zielonymi zeby zmiennasie zmniejszala o 1 i jak bedzie 0 to żeby sie bohater zatrzymywal

Odnośnik do komentarza
Udostępnij na innych stronach

Przerobiłem trochę ten przykład ;p

Dodaj skrypt

GML (Skrypt scrSnap)
// scrSnap( grid_w, grid _h )

x = floor(x/argument[0])*argument[0]+sprite_xoffset;

y = floor(y/argument[1])*argument[1]+sprite_yoffset;

Dodaj nową zmienną playerowi

GML
Move = 20;

Znajdź w Player - Global Left Pressed pętle for ( linia 39 ) i zamień na:

GML (Player Global Left Pressed)
//pokaż znaczniki ścieżki

for(n=1;n<PathWidth;n+=1)

{

var i, s;

i = instance_create(path_get_point_x(Path,n),path_get_point_y(Path,n),Point);

i.image_speed = 0;

if( n <= Move )

i.image_index = 0;

else

i.image_index = 1;

}

Zamień kod w Player - Global Right Pressed na:

GML
//RUCH

{

if(Ready && Move > 0)//jak sobie klikniesz i już znaleziono ścieżkę to...

{

path_start(Path,2,0,true); //jazda!

Ready = false;

}

}

Kolizję Point - Player, usuń z niej klocek i dodaj kod

GML (Point Collision with Player)
if( image_index == 0 )

{

instance_destroy();

with(other)Move -= 1;

}

else

with(other)

{

path_end(); //stop!

scrSnap( 16, 16 );

}

 

Btw. Dodaj imgPointowi nową klatkę, ta druga klatka ( o indeksie 1 ) będzie pokazywać niedostępną ścieżkę

E: Obiektowi Goal w evencie Collision with player usuń klocek i daj kod:

GML
if( other.Move > 0 )

{

instance_destroy();

with(other)Move -= 1;

}

else

with(other)

{

path_end(); //stop!

scrSnap( 16, 16 );

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • 8 miesięcy temu...

Odświeżę temat bo po co nowy zakładać;p

Więc tak,wg tego co powyżej wszystko śmiga,tylko że jak się powiększy rooma to już nie.. :< Kiedy się go powiększy można poruszać się jedynie na jakąś odległość od brzegu rooma,myślę że to ma związek z wielkością Patha,ale nie wiem jak go powiększyć\przesuwać xD

Proszę o odpowiedź.

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