Pagina 1 di 1

Conoscete uno script migliore per attaccare durante un salto o a terra? (GM: Studio 1)

Inviato: 24/07/2019, 15:08
da MagicFool64
Ciao, precedentemente ho postato vari topic dicendo che lo sprite del mio personaggio, quando attaccava in aria dopo un salto o durante una caduta, non si animava. Questo è lo script che ho inserito in Step Event

Codice: Seleziona tutto

if(place_meeting(x,y+1,obj_wall)){
    grounded = true
}else{
    grounded = false
}

if(grounded){                   
    sprite_index = spr_walk
} else {
    if(vspeed<0){               
        sprite_index = spr_jump
    }else{                      
        sprite_index = spr_jump
    }
}

if attacca = 1
    if grounded = true
        {
        sprite_index = spr_attack;
        hspeed = 0;
        image_speed = .2;
        }
    else if grounded = false
        {
        sprite_index = spr_attack_jump;
        image_speed = .2;
        }
Ma questo è quello che succede quando attacco in aria: https://imgur.com/a/l6QR2RN
Come potete vedere, lo sprite di quando attacca in aria non sia anima, ma quello dell'attacco a terra si. Ho provato a correggerlo in vari modi, ma niente funzionava. Quindi ho pensato: qualcuno di voi conosce uno script alternativo, per fare in modo che il personaggio attacca sia in aria che a terra? Scusate se chiedo tanto

Re: Conoscete uno script migliore per attaccare durante un salto o a terra? (GM: Studio 1)

Inviato: 24/07/2019, 22:29
da Scario
Allora, andando con ordine:
1- perchè aprire mille topic per un solo problema? Crei solo disordine così. Se nessuno risponde è perchè non sa\non può risponderti, se cerchi una risposta immediata apri la chat Discord
2- perchè non usi i suggerimenti dati negli altri topic? Le condizioni vanno con il doppio uguale, le assegnazioni con il singolo
3- Il tuo codice non funziona perchè è in disordine: se, ad esempio, grounded è uguale a true, prima esegue la condizione dentro quel "if (grounded)", poi esegue quella all'interno di "if attacca = 1", creando problemi come hai potuto notare. Ho provato il tuo codice su un progetto GM e l'ho corretto così:
Create Event:

Codice: Seleziona tutto

attacco=0
Step Event:

Codice: Seleziona tutto

kShoot       = keyboard_check_pressed(ord("X"));
kShootRel    = keyboard_check_released(ord("X")));

if (kShoot) {
    attacca=1
} 
if (kShootRel) {
    attacca=0
}

// il tuo codice "corretto"
if(place_meeting(x,y+1,obj_parent_solid)){
    grounded = true
}else{
    grounded = false
}

if(grounded){
    if attacca==1 {                 
        sprite_index = spr_attack;
        hspeed = 0;
        image_speed = .2;
    } else {
        sprite_index = spr_walk
    }
} else {
    if attacca==1 {
        sprite_index = spr_attack_jump;
        image_speed = .2;
    } else {
        sprite_index = spr_jump
    }
}
Draw Event:

Codice: Seleziona tutto

draw_self()
Così mi sembra andare correttamente (non ho messo il controllo dell'animazione se sale o scende perchè vedevo che non la stavi utilizzando), ma se non ti torna qualcosa dimmi.

Re: Conoscete uno script migliore per attaccare durante un salto o a terra? (GM: Studio 1)

Inviato: 25/07/2019, 12:34
da MagicFool64
Scario ha scritto:Allora, andando con ordine:
1- perchè aprire mille topic per un solo problema? Crei solo disordine così. Se nessuno risponde è perchè non sa\non può risponderti, se cerchi una risposta immediata apri la chat Discord
2- perchè non usi i suggerimenti dati negli altri topic? Le condizioni vanno con il doppio uguale, le assegnazioni con il singolo
3- Il tuo codice non funziona perchè è in disordine: se, ad esempio, grounded è uguale a true, prima esegue la condizione dentro quel "if (grounded)", poi esegue quella all'interno di "if attacca = 1", creando problemi come hai potuto notare. Ho provato il tuo codice su un progetto GM e l'ho corretto così:
Create Event:

Codice: Seleziona tutto

attacco=0
Step Event:

Codice: Seleziona tutto

kShoot       = keyboard_check_pressed(ord("X"));
kShootRel    = keyboard_check_released(ord("X")));

if (kShoot) {
    attacca=1
} 
if (kShootRel) {
    attacca=0
}

// il tuo codice "corretto"
if(place_meeting(x,y+1,obj_parent_solid)){
    grounded = true
}else{
    grounded = false
}

if(grounded){
    if attacca==1 {                 
        sprite_index = spr_attack;
        hspeed = 0;
        image_speed = .2;
    } else {
        sprite_index = spr_walk
    }
} else {
    if attacca==1 {
        sprite_index = spr_attack_jump;
        image_speed = .2;
    } else {
        sprite_index = spr_jump
    }
}
Draw Event:

Codice: Seleziona tutto

draw_self()
Così mi sembra andare correttamente (non ho messo il controllo dell'animazione se sale o scende perchè vedevo che non la stavi utilizzando), ma se non ti torna qualcosa dimmi.
Scusa se ho rotto le scatole per tutto questo tempo. Comunque, se anche questa volta non funziona, io mi arrendo

Re: Conoscete uno script migliore per attaccare durante un salto o a terra? (GM: Studio 1)

Inviato: 25/07/2019, 12:40
da MagicFool64
Funziona, scusa ancora per aver rotto le scatole. Grazie infinite

Re: Conoscete uno script migliore per attaccare durante un salto o a terra? (GM: Studio 1)

Inviato: 25/07/2019, 15:52
da Scario
MagicFool64 ha scritto:Funziona, scusa ancora per aver rotto le scatole. Grazie infinite
Ottimo!! Ma va, anzi, non smettere di chiedere.. e nemmeno di provarci! L'unico consiglio che mi sento di darti è di imparare a usare il debugger o di stamparti a video le variabili di ciò che non ti torna, così capisci cosa sta succedendo.