Il PG attacca solo mentre si muove

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
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:

Il PG attacca solo mentre si muove

Messaggio da Wolfrost »

Il mio PG attacca solo mentre si muove, ecco il codice nello step event:

Codice: Seleziona tutto

rightkey = keyboard_check(ord("D"))
leftkey = keyboard_check(ord("A"))
upkey = keyboard_check(ord("W"))
downkey = keyboard_check(ord("S"))
attackkey = mouse_check_button(mb_left)

if rightkey && place_free(x+4,y) && sprite_index != spr_Player_Attack {
    x += 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
    image_xscale = 1;
}

if leftkey && place_free(x-4,y) && sprite_index != spr_Player_Attack {
    x -= 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
    image_xscale = -1;
}

if upkey && place_free(x,y-4) && sprite_index != spr_Player_Attack {
    y -= 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
}

if downkey && place_free(x,y+4) && sprite_index != spr_Player_Attack {
    y += 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
}

if attackkey && sprite_index != spr_Player_Attack {
    sprite_index = spr_Player_Attack;
    image_speed = .5;
}

if !rightkey && !leftkey && !upkey && !downkey {
    image_speed = .2;
    sprite_index = spr_Player_Stand;
}
Il codice è molto semplice, inoltre ho messo un Animation End Event con questo codice:

Codice: Seleziona tutto

if sprite_index == spr_Player_Attack {
    sprite_index = spr_Player_Stand;
}
Dov'è che sbaglio? :confuso:
Immagine

Immagine

Avatar utente
Bombertoman
Membro super
Messaggi: 595
Iscritto il: 14/07/2014, 18:35
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Località: Manfredonia (FG)
Contatta:

Re: Il PG attacca solo mentre si muove

Messaggio da Bombertoman »

Wolfrost ha scritto:Il mio PG attacca solo mentre si muove, ecco il codice nello step event:

Codice: Seleziona tutto

rightkey = keyboard_check(ord("D"))
leftkey = keyboard_check(ord("A"))
upkey = keyboard_check(ord("W"))
downkey = keyboard_check(ord("S"))
attackkey = mouse_check_button(mb_left)

if rightkey && place_free(x+4,y) && sprite_index != spr_Player_Attack {
    x += 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
    image_xscale = 1;
}

if leftkey && place_free(x-4,y) && sprite_index != spr_Player_Attack {
    x -= 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
    image_xscale = -1;
}

if upkey && place_free(x,y-4) && sprite_index != spr_Player_Attack {
    y -= 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
}

if downkey && place_free(x,y+4) && sprite_index != spr_Player_Attack {
    y += 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
}

if attackkey && sprite_index != spr_Player_Attack {
    sprite_index = spr_Player_Attack;
    image_speed = .5;
}

if !rightkey && !leftkey && !upkey && !downkey {
    image_speed = .2;
    sprite_index = spr_Player_Stand;
}
Il codice è molto semplice, inoltre ho messo un Animation End Event con questo codice:

Codice: Seleziona tutto

if sprite_index == spr_Player_Attack {
    sprite_index = spr_Player_Stand;
}
Dov'è che sbaglio? :confuso:
Hai dimenticato di dirci un piccolo dettaglio, credo... perché dici che sbagli? Il personaggio attacca anche quando è fermo? Non attacca mai? Ti esce un messaggio di errore? Dicci cosa va male e vedremo di risolvere. :)
Project GG... vediamo se riesco a finire un gioco per una volta...

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: Il PG attacca solo mentre si muove

Messaggio da Wolfrost »

Bombertoman ha scritto:
Wolfrost ha scritto:Il mio PG attacca solo mentre si muove, ecco il codice nello step event:

Codice: Seleziona tutto

rightkey = keyboard_check(ord("D"))
leftkey = keyboard_check(ord("A"))
upkey = keyboard_check(ord("W"))
downkey = keyboard_check(ord("S"))
attackkey = mouse_check_button(mb_left)

if rightkey && place_free(x+4,y) && sprite_index != spr_Player_Attack {
    x += 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
    image_xscale = 1;
}

if leftkey && place_free(x-4,y) && sprite_index != spr_Player_Attack {
    x -= 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
    image_xscale = -1;
}

if upkey && place_free(x,y-4) && sprite_index != spr_Player_Attack {
    y -= 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
}

if downkey && place_free(x,y+4) && sprite_index != spr_Player_Attack {
    y += 3
    sprite_index = spr_Player_Run;
    image_speed = .2;
}

if attackkey && sprite_index != spr_Player_Attack {
    sprite_index = spr_Player_Attack;
    image_speed = .5;
}

if !rightkey && !leftkey && !upkey && !downkey {
    image_speed = .2;
    sprite_index = spr_Player_Stand;
}
Il codice è molto semplice, inoltre ho messo un Animation End Event con questo codice:

Codice: Seleziona tutto

if sprite_index == spr_Player_Attack {
    sprite_index = spr_Player_Stand;
}
Dov'è che sbaglio? :confuso:
Hai dimenticato di dirci un piccolo dettaglio, credo... perché dici che sbagli? Il personaggio attacca anche quando è fermo? Non attacca mai? Ti esce un messaggio di errore? Dicci cosa va male e vedremo di risolvere. :)
Semplicemente voglio che attacchi anche quando è fermo (tirando un colpo di spada) invece sembra che il codice di attacco venga eseguito solo mentre è in movimento... :(
Immagine

Immagine

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

Re: Il PG attacca solo mentre si muove

Messaggio da gameplay_extreme »

devi invertire gli ultimi 2 if: come è adesso tu prima gli dici "se premi il tasto del mouse avvia l'animazione di attacco" e poi gli dici "se i tasti di movimento non sono premuti avvia l'animazione di giocatore fermo", praticamente solo l'animazione che è settata per ultima viene eseguita...è questo il problema.
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)

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: Il PG attacca solo mentre si muove

Messaggio da Wolfrost »

gameplay_extreme ha scritto:devi invertire gli ultimi 2 if: come è adesso tu prima gli dici "se premi il tasto del mouse avvia l'animazione di attacco" e poi gli dici "se i tasti di movimento non sono premuti avvia l'animazione di giocatore fermo", praticamente solo l'animazione che è settata per ultima viene eseguita...è questo il problema.
Grazie mille! :)
Immagine

Immagine

Avatar utente
aironenero
GMI Guru
Messaggi: 2612
Iscritto il: 02/05/2012, 14:56
Specialità: Unity 3D
Uso: GM:Studio 1.4 Pro
Località: Ispica
Contatta:

Re: Il PG attacca solo mentre si muove

Messaggio da aironenero »

Wolfrost ha scritto:
gameplay_extreme ha scritto:devi invertire gli ultimi 2 if: come è adesso tu prima gli dici "se premi il tasto del mouse avvia l'animazione di attacco" e poi gli dici "se i tasti di movimento non sono premuti avvia l'animazione di giocatore fermo", praticamente solo l'animazione che è settata per ultima viene eseguita...è questo il problema.
Grazie mille! :)
Puoi migliorare ancora di più creando un sistema a variabili booleane (sfiga che su GM non ci sono enumerazioni) che vengolo elaborate nel draw event e attivano le animazioni.
Unity Developer
Immagine
Immagine

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: Il PG attacca solo mentre si muove

Messaggio da Wolfrost »

aironenero ha scritto:
Wolfrost ha scritto:
gameplay_extreme ha scritto:devi invertire gli ultimi 2 if: come è adesso tu prima gli dici "se premi il tasto del mouse avvia l'animazione di attacco" e poi gli dici "se i tasti di movimento non sono premuti avvia l'animazione di giocatore fermo", praticamente solo l'animazione che è settata per ultima viene eseguita...è questo il problema.
Grazie mille! :)
Puoi migliorare ancora di più creando un sistema a variabili booleane (sfiga che su GM non ci sono enumerazioni) che vengolo elaborate nel draw event e attivano le animazioni.
Spiegati meglio... so che le variabili booleane possono avere come valore solo true/false quindi 0 e 1, ma puoi chiarirmi il discorso?
EDIT: Credo di aver capito... uso un sistema simile anche su Serious Zeb ma non sapevo il termine tecnico. Grazie mille lo stesso comunque
Immagine

Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 159 ospiti