pathfinding oggetto scompare

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

pathfinding oggetto scompare

Messaggio da sfigatto »

Ho un oggetto che deve raggiungere un secondo oggetto.
Per raggiungere l'oggetto deve evitare altri oggetti (immobili) che gli si parano davanti.

Ho usato il più classico codice per il pathfinding(ho trovato diversi tutorial e sono tutti uguali).

Ho messo tutto nello step dell'oggetto che deve inseguire il scondo oggetto

Codice: Seleziona tutto

grid=mp_grid_create(0,0,room_width/2,room_height/2,92,92);
path=path_add();
mp_grid_add_instances(path,tavolo_orizzontale,1);
mp_grid_path(grid,path,x,y,p1.x,p1.y,1);
path_start(path,3,"",true);

Il problema è che lo sprite dell'oggetto scompare. Inoltre appare l'avviso "out of memory".
Cosa sbaglio?

Avatar utente
CaptainOlon
Membro attivo
Messaggi: 441
Iscritto il: 30/07/2011, 14:56
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Salerno
Contatta:

Re: pathfinding oggetto scompare

Messaggio da CaptainOlon »

Premetto di non aver mai usato le path.
Comunque il codice da te postato viene eseguito ad ogni step, cioè 30 volte al secondo (se non hai modificato la room_speed).
Sei sicuro che debba essere eseguito nello step?
Secondo me va eseguito una sola volta.
Prova a metterlo nel Create Event
Immagine
Immagine

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: pathfinding oggetto scompare

Messaggio da sfigatto »

Effettivamente è sembrato strano anche a me.
così la prima cosa che ho fatto è stato spostare la creazione della grid nel create, risolvevo il problema del "out of memory", ma l'oggetto continuava a sparire , anzi è più corretto dire che diventa invisibile perché con il debug ho notato che mi segnala ancora la sua esistenza.

Ora ho messo nel create:

grid=mp_grid_create(0,0,room_width/2,room_height/2,92,92);
path=path_add();


e nello step:

mp_grid_add_instances(path,tavolo_orizzontale,1);
mp_grid_path(grid,path,x,y,p1.x,p1.y,1);
path_start(path,3,"",true);


In questa maniera, l'oggetto non scompare e non ho il problema del "out of memory"

Però l'oggetto, rimane immobile e non insegue il secondo oggetto se tra i due c'è l'oggetto tavolo_orizontale.
inoltre quando inizia ad inseguirlo, se tra i due oggetti si frappone l'oggetto tavolo l'oggetto non lo aggira come dovrebbe fare, ma si blocca vicino all'oggetto tavolo.


p.s. questo è il tutorial che ho seguito, come vedete e tutto nello step https://www.youtube.com/watch?v=A_AurmdOnw4

Avatar utente
Scario
Moderatore
Messaggi: 2707
Iscritto il: 26/05/2003, 20:29
Specialità: Tergiversare
Uso: GM:Studio 2
Contatta:

Re: pathfinding oggetto scompare

Messaggio da Scario »

Metti le prime 3 righe di codice nel create dell'oggetto: "Out of Memory" probabilmente ti compare perchè stai creando griglie e path appunto 30 volte al secondo.

EDIT: ops hai risposto :D Comunque hai fatto un piccolo errore:

Codice: Seleziona tutto

mp_grid_add_instances(path,tavolo_orizzontale,1);
il primo argument è la griglia e non la path, quindi prova a inserire grid e vedi se va tutto a posto.
Immagine

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: pathfinding oggetto scompare

Messaggio da civic71 »

Ho appena copiato l'esempio del video e a me funziona bene.
ecco il codice presente solo nello step :

Codice: Seleziona tutto

grid=mp_grid_create(0,0,room_width/32,room_height/32,32,32);
path=path_add();
mp_grid_add_instances(path,obj_wall,true);
mp_grid_path(grid,path,x,y,obj_player.x,obj_player.y,true);
path_start(path,3,"",1);
Immagino che il tuo errore possa derivare da :
grid=mp_grid_create(0,0,room_width/2,room_height/2,92,92);
Controlla che la grid della room sia settata a 32 e prova con questo codice :

Codice: Seleziona tutto

grid=mp_grid_create(0,0,room_width/32,room_height/32,32,32);

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: pathfinding oggetto scompare

Messaggio da pacmino »

come diceva Yoda: mettere i parametri ad cazzum errore è :asd:

grid = mp_grid_create(0, 0, room_width / 32, room_height /32, 32, 32)

dimensioni della room diviso la grandezza delle celle e dimensioni delle celle

mp_grid_add_instances(grid, obj_wall, false);

si aggiungono alla grid creata le istanze che identificano le celle proibite (ad esempio i muri o altri ostacoli)

path = path_add();

si crea la path

mp_grid_path(grid, path, x, y, obj_Player.x, obj_Player.y, 1)

si sfrutta la path
Immagine

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: pathfinding oggetto scompare

Messaggio da sfigatto »

Grazie a tutti per i vostri preziosi consigli :)

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 121 ospiti