Minchione
Newbie
Messaggi: 1
Iscritto il: 03/02/2016, 22:23
Specialità: cacca
Uso: GameMaker 8
Contatta:

Animazioni camminata personaggio punta e clicca.

Messaggio da Minchione »

Ciao a tutti, sono nuovo nel forum e volevo proporvi un quesito. Ho incominciato da poco a creare (o almeno provarci) un videogioco di ruolo con Game Maker. Questo "gioco" sfrutta la modalità di movimento simile a quella di Sacred (il personaggio va dove clicchi con il mouse).Ho buttato su uno sprite-manichino su paint, che poi diverrà lo sprite dell'oggetto player. Ho tolto il cursore di windows e aggiunto uno personalizzato all'interno del videogioco. La mappa è vasta e la visuale segue il cursore del mouse. L'oggetto player si muove ogni volta dove clicco con il mouse, dove si crea anche un sensore verde che indica il punto dove l'oggetto player si fermerà (utilizzando l'evento collision). La domanda è: come faccio, a seconda di dove clicco con il mouse e, di conseguenza, verso dove andrà a muoversi l'oggetto player, a integrare le giuste animazioni di movimento all'oggetto? Esiste un codice? Posso usare gli eventi accessibili dal menù di game maker?
Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Animazioni camminata personaggio punta e clicca.

Messaggio da Vallo92 »

Cosa intendi per "integrare le giuste animazioni"?
Quante animazioni hai e come le vuoi utilizzare?
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si
Avatar utente
boxbuilder
Membro
Messaggi: 158
Iscritto il: 25/06/2015, 10:37
Specialità: programmatore
Uso: GM:Studio 1.4 HTML5
Contatta:

Re: Animazioni camminata personaggio punta e clicca.

Messaggio da boxbuilder »

Ciao,
io nei miei giochi faccio cosi:

1. creo x sprite animati a seconda dei movimenti che il tuo pg deve compiere (idle, up, walk, run, stunned, ecc ecc...)

2. gestisco l'animazione dei personaggi eseguendo all'interno dell'evento draw una funzione animate_character alla quale do' come input la id dell'oggetto stesso, che poi userò all'interno di un with.

Lo script dovrebbe essere una cosa di questo tipo:

Codice: Seleziona tutto

///animate_character(obj_id); call it in draw event.
with(argument0){
      
            if(x != xprevious){
                sprite_index = anim_walk;
                if(x < xprevious){
                    facing = -1;
                } else {
                    facing = 1;
                }
            } else {
                sprite_index = anim_idle;
            }
            if(y != yprevious && x >= xprevious){
                sprite_index = anim_up;
            } 
            if(y > yprevious && x == xprevious){
                sprite_index = anim_walk;
            }
        draw_sprite_ext(sprite_index,image_index,x,y,facing,1,0,c_white,alpha);
}
così avrai l'animazione completamente separata dalla logica di gioco ma dipendente da essa.
Avatar utente
ElBebo
Membro
Messaggi: 138
Iscritto il: 16/09/2012, 12:40
Specialità: Programmazione
Uso: GM:Studio 1.4 Android
Località: Rimini
Contatta:

Re: Animazioni camminata personaggio punta e clicca.

Messaggio da ElBebo »

Penso il suo problema sia riassumibile con "Detto dove andare e come, come fa il mio personaggio ad eseguire sempre le animazioni giuste?". Io ti risponderei semplicemente di assegnare le animazioni in base alla velocitá e direzione: per esempio, se la velocitá verticale é positiva significa che il personaggio si sta muovendo verso il basso, quindi eseguirá l'animazione per quando cammina in quella direzione; lo stesso per le altre animazioni ovviamente.

Se tu usassi le variabili "direction" e "speed" potresti porre delle condizioni agli angoli: analogamente all'esempio di prima l'animazione di "camminata verso il basso" dovrebbe manifestarsi quando indipendentemente dalla "speed", la "direction" é compresa tra 225 e 315.

Nel caso tu utilizzassi "hspeed" e "vspeed" dovresti fare dei confronti diretti tra queste variabili. Di nuovo lo stesso esempio, qui significherebbe specificare che per utilizzare "camminata vers il basso", il modulo di "hspeed" dovrebbe essere minore di quello di "vspeed", e "vspeed" maggiore di 0.

Spero di essere stato chiaro e di averti aiutato, non esitare a chiedere. :)
Avatar utente
Wolfrost
Membro super
Messaggi: 692
Iscritto il: 03/08/2014, 13:08
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Una galassia lontana lontana...
Contatta:

Re: Animazioni camminata personaggio punta e clicca.

Messaggio da Wolfrost »

Quoto sia ElBebo che boxbuilder.

Se il tuo sistema di movimento apporta modifiche dirette alle variabili x e y, allora usare xprevious/yprevious è la soluzione ideale. Al contrario, nel caso in cui tu sia usando hspeed/vspeed, ti consiglio di creare una variabile personalizzata, chiamata tipo "hspeed_previous" e "vspeed_previous" e poi, nel Begin Step event, fare
hspeed_previous = hspeed; vspeed_previous = vspeed.
Immagine

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

Re: Animazioni camminata personaggio punta e clicca.

Messaggio da Alv »

Se non ho capito male, il problema è assegnare la giusta animazione 2D (fra le poche a disposizione) in base alla direzione.

Codice: Seleziona tutto

anim=floor((direction+45)/90) mod 4;
Questo codice ritorna 0 per destra, 1 per alto, 2 per sinistra, 3 per basso. Si può modificare anche per 8 direzioni.