Personaggio che si ferma quando attacca

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
MagicFool
Membro
Messaggi: 189
Iscritto il: 25/10/2013, 14:43
Specialità: Artista
Uso: GM:Studio 1.4 Pro
Contatta:

Personaggio che si ferma quando attacca

Messaggio da MagicFool »

Sono riuscito a fare uno script per gli attacchi a mischia per il personaggio giocabile, ma quest'ultimo continua a muoversi quando mi sto spostando e premo il pulsante per l'attacco. Vi spiego meglio: quando mi muovo a destra e premo il tasto "X" (per attaccare), mentre tengo premuto la freccetta destra object del protagonista continua a spostarsi a destra mentre attacca.

Questo è lo script che ho aggiunto nell'evento CREATE:

Codice: Seleziona tutto

grav = 0.4;
hsp = 0;
vsp = 0;
jumpspeed = 10;
movespeed = 4

attacking = false
Nelle'envento STEPT ne ho aggiunti 3:

Codice: Seleziona tutto

key_right = keyboard_check(vk_right);
key_left = -keyboard_check(vk_left);
key_jump = keyboard_check(ord("Z"));

move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;

if (place_meeting(x,y+1,obj_wall))
{
    vsp = key_jump * -jumpspeed
}

if (place_meeting(x+hsp,y,obj_wall))
{
    while(!place_meeting(x+sign(hsp),y,obj_wall))
    {
        x += sign(hsp);
    }
    hsp = 0;
}
x += hsp;

if (place_meeting(x,y+vsp,obj_wall))
{
    while(!place_meeting(x,y+sign(vsp),obj_wall))
    {
        y += sign(vsp);
    }
    vsp = 0;
}
y += vsp;

Codice: Seleziona tutto

if !attacking
{
    if hsp > 0 image_xscale = 1
    else if hsp < 0 image_xscale = -1
    
    if !(place_meeting(x,y+1,obj_wall))
    {
        sprite_index = spr_player_jump
    }
    else if hsp != 0
    {
        sprite_index = spr_player_walk
    }
    else
    {
        sprite_index = spr_player_stand
    }
}

Codice: Seleziona tutto

if attacking = false
    {
    image_speed = .23
    }
else
    {
    image_speed = .38
    }
Il problema è che non riesco a far fermare l'object ogni volta che il giocatore esegue l'attacco. Qualcuno di voi sà come fare?

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da Solid Snake »

Codice: Seleziona tutto

if (attacking)
{
      speed=0;
}
else
{
     //codice del movimento
}
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

MagicFool
Membro
Messaggi: 189
Iscritto il: 25/10/2013, 14:43
Specialità: Artista
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da MagicFool »

Solid Snake ha scritto:

Codice: Seleziona tutto

if (attacking)
{
      speed=0;
}
else
{
     //codice del movimento
}
Intendi tutto lo script nello STEPT per "codice del movimento"?

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: Personaggio che si ferma quando attacca

Messaggio da Wolfrost »

MagicFool ha scritto:
Solid Snake ha scritto:

Codice: Seleziona tutto

if (attacking)
{
      speed=0;
}
else
{
     //codice del movimento
}
Intendi tutto lo script nello STEPT per "codice del movimento"?
Inanzitutto non si chiama evento "STEPT" ma step :asd: Mia nonna lo chiamerebbe STEPT (all'inizio pensavo fosse un'errore di battitura, e invece...)
Comunque sia sta tutto nel nome: Lo step event viene eseguito ad ogni step (cioè ad ogni frame) del gioco :mrgreen: E tu vuoi controllare che il tuo pg stia attaccando per decidere se farlo muovere o no sempre, vero? Allora lo step event è quello che fa per te.
Solid Snake, nel codice, usa la variabile built-in speed senza considerare che tu stai seguendo l'esempio di Shaun Spalding sui platform, che abbandona l'uso di meccaniche built-in. Ti conviene settare la variabile hsp, che gestisce il movimento orizzontale, a 0, oppure cambiare totalmente sistema e fare ricorso a variabili booleane per decidere se si può camminare/attaccare/saltare, eccettera (come abbiamo fatto con Serious Zeb)
Immagine

Immagine

MagicFool
Membro
Messaggi: 189
Iscritto il: 25/10/2013, 14:43
Specialità: Artista
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da MagicFool »

Lo step event viene eseguito ad ogni step (cioè ad ogni frame) del gioco :mrgreen: E tu vuoi controllare che il tuo pg stia attaccando per decidere se farlo muovere o no sempre, vero? Allora lo step event è quello che fa per te.
Solid Snake, nel codice, usa la variabile built-in speed senza considerare che tu stai seguendo l'esempio di Shaun Spalding sui platform, che abbandona l'uso di meccaniche built-in. Ti conviene settare la variabile hsp, che gestisce il movimento orizzontale, a 0, oppure cambiare totalmente sistema e fare ricorso a variabili booleane per decidere se si può camminare/attaccare/saltare, eccettera (come abbiamo fatto con Serious Zeb)
Intendi così?

Codice: Seleziona tutto

if (attacking)
{
      hsp=0;
}

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da Tizzio »

Wolfrost ha scritto: Inanzitutto non si chiama evento "STEPT" ma step :asd: Mia nonna lo chiamerebbe STEPT (all'inizio pensavo fosse un'errore di battitura, e invece...)

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da gameplay_extreme »

Inanzitutto non si chiama evento "STEPT" ma step Mia nonna lo chiamerebbe STEPT (all'inizio pensavo fosse un'errore di battitura, e invece...)
e invece...sono 2 errori di battitura... (un po' di ottimismo ragazzi xD)

dubbio: MagicFool ma tu non sei simsure, cioè siete 2 utenti separati... o no ?

al limite se proprio il giocatore non vuole fermarsi metti in step_ev:

Codice: Seleziona tutto

x = xprevious; // blocco coordinate (potrebbe generare un piccolo scatto...)
y = yprevious;
speed = 0 // azzero spostamento (variabili integrate)
gravity = 0
hsp = 0 // azzero spostamento (variabili personalizzate)
vsp = 0
grav = 0
voglio vedere con un code del genere come fa a muosersi ancora xD
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

MagicFool
Membro
Messaggi: 189
Iscritto il: 25/10/2013, 14:43
Specialità: Artista
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da MagicFool »

dubbio: MagicFool ma tu non sei simsure, cioè siete 2 utenti separati... o no ?
No, non lo sono.

MagicFool
Membro
Messaggi: 189
Iscritto il: 25/10/2013, 14:43
Specialità: Artista
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da MagicFool »

Sono riuscito a risolvere il problema. Mi è bastato mettere nello step_event:

Codice: Seleziona tutto

if attacking = false
    {
    image_speed = .23
    movespeed = 4
    }
else
    {
    image_speed = .38
    movespeed = 0
    }

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: Personaggio che si ferma quando attacca

Messaggio da Wolfrost »

Tizzio ha scritto:
Wolfrost ha scritto: Inanzitutto non si chiama evento "STEPT" ma step :asd: Mia nonna lo chiamerebbe STEPT (all'inizio pensavo fosse un'errore di battitura, e invece...)
STEPTCHILD ADOCCION!
Immagine

Immagine

Avatar utente
Simsure
Membro
Messaggi: 223
Iscritto il: 13/09/2013, 21:54
Specialità: Programmazione
Uso: GM:Studio 2
Località: dietro di te...
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da Simsure »

gameplay_extreme ha scritto:
Inanzitutto non si chiama evento "STEPT" ma step Mia nonna lo chiamerebbe STEPT (all'inizio pensavo fosse un'errore di battitura, e invece...)
e invece...sono 2 errori di battitura... (un po' di ottimismo ragazzi xD)

dubbio: MagicFool ma tu non sei simsure, cioè siete 2 utenti separati... o no ?

al limite se proprio il giocatore non vuole fermarsi metti in step_ev:

Codice: Seleziona tutto

x = xprevious; // blocco coordinate (potrebbe generare un piccolo scatto...)
y = yprevious;
speed = 0 // azzero spostamento (variabili integrate)
gravity = 0
hsp = 0 // azzero spostamento (variabili personalizzate)
vsp = 0
grav = 0
voglio vedere con un code del genere come fa a muosersi ancora xD
Hemm.....scusatemi se mi intrometto con OT,ma perche pensi che siamo lo stesso utente?
Immagine
Spoiler
Immagine

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da gameplay_extreme »

OT:
mi son sbagliato...scusa xD
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

MagicFool
Membro
Messaggi: 189
Iscritto il: 25/10/2013, 14:43
Specialità: Artista
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Personaggio che si ferma quando attacca

Messaggio da MagicFool »

Simsure ha scritto:Hemm.....scusatemi se mi intrometto con OT,ma perche pensi che siamo lo stesso utente?
Infatti io nemmeno ti conosco

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti