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 );
}