Movimento di più personaggi

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
ben
Membro
Messaggi: 143
Iscritto il: 05/10/2016, 15:40
Specialità: programmazione
Uso: GM:Studio 1.4 Free
Contatta:

Movimento di più personaggi

Messaggio da ben »

Nel mio gioco si devono controllare 4 personaggi insieme sulla mappa.
Io vorrei avere un effetto simile ad Earthbound.
Potreste dirmi come fare? :sisisi:

Avatar utente
boxbuilder
Membro
Messaggi: 158
Iscritto il: 25/06/2015, 10:37
Specialità: programmatore
Uso: GM:Studio 1.4 HTML5
Contatta:

Re: Movimento di più personaggi

Messaggio da boxbuilder »

Ti consiglio di usare i path che ti facilitano tantissimo se non hai molta dimestichezza col codice:
Fondamentalmente assegni lo stesso path a tutti i tuoi oggetti alterando lievemente la Path Position:

https://docs.yoyogames.com/source/dadio ... tions.html

Avatar utente
Alv
Membro
Messaggi: 133
Iscritto il: 14/11/2014, 22:33
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Sicilia
Contatta:

Re: Movimento di più personaggi

Messaggio da Alv »

Potresti tener traccia delle posizioni passate del giocatore in un array (inclusa la direzione). Crea due script: ph_init e ph_add. ph_init va chiamato nell'evento Create del giocatore, e inizializza la lista delle posizioni. Bisogna passare come argomento la lunghezza desiderata della lista. ph_add va chiamato quando il giocatore si muove. Scarta la posizione più vecchia facendo scorrere la lista e inserisce la nuova posizione in testa.

In questo modo hai 3 array che è possibile consultare:

Codice: Seleziona tutto

hx[i]
hy[i]
hdir[i]
i=0 è la posizione attuale. Più i è grande, più guardi nel passato (in termini di numero di step).

ph_init(list_length)

Codice: Seleziona tutto

// argument0: numero posizioni

var i;
pcount=argument0;
for (i=0;i<pcount;i+=1) {
    hx[i]=x;
    hy[i]=y;
    hdir[i]=direction;
}
ph_add()

Codice: Seleziona tutto

var i;

for (i=pcount-1;i>0;i-=1) {
    hx[i]=hx[i-1];
    hy[i]=hy[i-1];
    hdir[i]=hdir[i-1];
}
hx[0]=x;
hy[0]=y;
hdir[0]=direction;

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti