bricky91
Membro super
Messaggi: 688
Iscritto il: 20/10/2006, 16:32
Uso: GM:Studio 2
Località: berbenno di valtellina
Contatta:

Problema pavimento

Messaggio da bricky91 »

Ciao a tutti, sono tornato!! :cappa: E ho già un problema... In ogni caso colgo l'occasione di questo post per salutare tutti e chiedere: "Come state?".

Detto questo, ecco il problema: ho un oggetto "pavimento" che altro non è che un quadrato, un blocco. Io però voglio che, se il personaggio salta verso l'alto quando è sotto di esso, ci possa passare attraverso, e che diventi solido quando il personaggio è sopra, per fare in modo che quando ricade si fermi su di esso. Quindi ho usato, nello STEP del blocco, il seguente codice:

Codice: Seleziona tutto

if(instance_exists(mario))
{

if(mario.x>=x and mario.x<=x+32 and mario.y<=y-20)
{
    solid=1;
}
else
{
    solid=0;
}

}



if(instance_exists(mario_2))
{

if(mario_2.x>=x and mario_2.x<=x+32 and mario_2.y<=y-20)
{
    solid=1;
}
else
{
    solid=0;
}

}
mario e mario_2 sono i 2 personaggi che ho. Il problema è che per mario_2 il codice funziona perfettamente, mentre per mario no! E questo nonostante abbia fatto copia-incolla! :fapensare: Ora, avete idee per risolvere? Io non capisco proprio... Inoltre gli sprite di mario e mario_2 sono gli stessi, sono 2 personaggi uguali, quindi i valori di x,y ecc dovrebbero essere uguali... il problema non capisco quale possa essere. Grazie in anticipo per chi rispondesse!
una volta einstein disse:"potremmo toccare le stelle, se solo nn avessero tutte quelle guaardie del corpo..."
Immagine
Avatar utente
pontino
Admin
Messaggi: 947
Iscritto il: 17/09/2006, 21:30
Contatta:

Re: Problema pavimento

Messaggio da pontino »

ciao bricky bentornato :metalgo:

credo che il problema sia in mario, non nel blocco..
le origini degli sprite sono uguali?

Cosa succede con mario? Si blocca o semplicemente ci sbatte la testa e ritorna giu?
ਗੁਰੂ
Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: Problema pavimento

Messaggio da maz85 »

Hey Bricky quanto tempo! :salut:
Come ha detto pontino probabilmente ci sta qualche problema nello sprite controlla origine, bbox ecc...
bricky91
Membro super
Messaggi: 688
Iscritto il: 20/10/2006, 16:32
Uso: GM:Studio 2
Località: berbenno di valtellina
Contatta:

Re: Problema pavimento

Messaggio da bricky91 »

In effetti non ho scritto il problema effettivo! :spat: Mario praticamente non si farma sul blocco, come se non diventasse solido. Cade normalmente.

Gli sprite dei 2 mario sono gli stessi, non due uguali ma è proprio lo stesso sprite per entrambi! E mario_2 è praticamente una copia di mario, cioè ho fatto click destro su mario e "duplicate"... Questo per risolvere dei problemi relativi alla gestione di due istanze dello stesso oggetto... In ogni caso è proprio per questo che non capisco: com'è possibile che la copia di mario funzioni benissimo, mentre mario no, dato che poi il codice di mario non l'ho più modificato? Mi pare strano..

In ogni caso adesso avevo intenzione di ripartire dall'inizio con la programmazione, perché mi sto un po' incasinando la vita... Volevo solo cercare di risolvere questo problema però.
una volta einstein disse:"potremmo toccare le stelle, se solo nn avessero tutte quelle guaardie del corpo..."
Immagine
Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Problema pavimento

Messaggio da Sla »

Ciao bricky.
Da quello che ho letto hai due object perfettamente uguali che si comportano in modo differente!
Questo sarebbe come dire 2 = 4, quindi di sicuro c'è qualcosa di diverso tra mario e mario2,
controllali bene bene e soprattutto controlla il block.
Oltre a questo non so che dire..
eppure mi sembra tutto giusto...
Avatar utente
pontino
Admin
Messaggi: 947
Iscritto il: 17/09/2006, 21:30
Contatta:

Re: Problema pavimento

Messaggio da pontino »

se vuoi pubblica il sorgente magari possiamo vedere di persona :salut:
ਗੁਰੂ
bricky91
Membro super
Messaggi: 688
Iscritto il: 20/10/2006, 16:32
Uso: GM:Studio 2
Località: berbenno di valtellina
Contatta:

Re: Problema pavimento

Messaggio da bricky91 »

Slascio, hai centrato in pieno la questione! :?

Potrei anche pubblicare il sorgente in effetti... Ma tanto ho già iniziato la riprogrammazione del tutto, quindi facciamo che per ora lascio perdere, se riprogrammando il problema persiste posto il .gm6!

Grazie a tutti, ciao! :)
una volta einstein disse:"potremmo toccare le stelle, se solo nn avessero tutte quelle guaardie del corpo..."
Immagine
Draghidus
Newbie
Messaggi: 49
Iscritto il: 30/12/2008, 16:04
Contatta:

Re: Problema pavimento

Messaggio da Draghidus »

Qui si può mettere la classica azione che fa quando collide con il goomba:
Nell'evento collisione con il blocco metti:
IF AN EXPRESSION IS TRUE (su control)
vspeed > 0 && y < other.y+8
E quello significa che la prossima azione funzionerà SE Mario arriverà dall'alto.
Avatar utente
PeppeAs95
GMI Advanced
Messaggi: 2231
Iscritto il: 24/06/2008, 16:10
Specialità: Modellazione[LD-HD]
Località: Sonosce (MO)
Contatta:

Re: Problema pavimento

Messaggio da PeppeAs95 »

Per me, il problema sta nel blocco. ad esempio, avrai messo che se mario2 è sopra collide, con mario 1 no. Prova a verificare questo piu attentamente se ci sono altre funzioni. :salut:
Immagine

Mario: Livello 51Immagine
Luigi: livello 51Immagine
Bowser: livello 40Immagine
Spoiler
Immagine
Immagine
Immagine
Immagine
sggsoftware
Membro
Messaggi: 178
Iscritto il: 01/07/2007, 15:09
Uso: GM:Studio 2
Località: Sicilia
Contatta:

Re: Problema pavimento

Messaggio da sggsoftware »

Il problema è evidente!

Codice: Seleziona tutto

if (instance_exists(mario))
{
    if(mario.x>=x and mario.x<=x+32 and mario.y<=y-20) solid=1;
    else solid=0;
}

if (instance_exists(mario_2))
{
    if(mario_2.x>=x and mario_2.x<=x+32 and mario_2.y<=y-20) solid=1;
    else solid=0;
}
Il primo blocco di codice (quello relativo a mario) praticamente è come se non ci fosse, in quanto il suo effetto viene annullato dal secondo blocco (mario_2).

Si sarebbe dovuto scrivere qualcosa del genere:

Codice: Seleziona tutto

solid=0;
if (instance_exists(mario))
{
    if(mario.x>=x and mario.x<=x+32 and mario.y<=y-20) solid=1;
}

if (instance_exists(mario_2))
{
    if(mario_2.x>=x and mario_2.x<=x+32 and mario_2.y<=y-20) solid=1;
}
In ogni caso, comunque, cambiare la proprietà solid non è una buona soluzione, in quanto solitamente in un gioco vi sono più oggetti di un singolo giocatore, e non si può far dipendere la solidità o meno di un blocco da un solo oggetto: gli altri oggetti ne risentirebbero! Secondo me la cosa migliore da fare è verificare le collisioni in funzione della velocità verticale (> o < di 0) direttamente nel codice degli oggetti mario e mario_2.
Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: Problema pavimento

Messaggio da maz85 »

Sgg ha ragione, che belle fette di salame tenevo sugli occhi :lol:
Avatar utente
pontino
Admin
Messaggi: 947
Iscritto il: 17/09/2006, 21:30
Contatta:

Re: Problema pavimento

Messaggio da pontino »

già mi ero dimenticato che era nello step SWT
ਗੁਰੂ
Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Problema pavimento

Messaggio da Sla »

Non l'ho visto :shock: eppure gli occhiali gia li porto.. :paura:
eppure mi sembra tutto giusto...
bricky91
Membro super
Messaggi: 688
Iscritto il: 20/10/2006, 16:32
Uso: GM:Studio 2
Località: berbenno di valtellina
Contatta:

Re: Problema pavimento

Messaggio da bricky91 »

Oh cacchio, ma era talmente ovvio... Grazie mille SGG! Non ci sarei mai arrivato probabilmente :lol:

Saluti!
una volta einstein disse:"potremmo toccare le stelle, se solo nn avessero tutte quelle guaardie del corpo..."
Immagine
bricky91
Membro super
Messaggi: 688
Iscritto il: 20/10/2006, 16:32
Uso: GM:Studio 2
Località: berbenno di valtellina
Contatta:

Re: Problema pavimento

Messaggio da bricky91 »

Scusate per il doppio post...

Però SGG, non ho capito come potrei non far dipendere la solidità dell'oggetto dalla posizione di mario... Cioè, tu dici che devo modificare il codice di mario e mario_2, ma come faccio? Il blocco lo devo settare come solido.. E se è solido anche se per la collisione controllo la velocità verticale si ferma comunque se mario va verso l'alto. Cioè, per far sì che quando mario salta verso l'alto non si fermi contro il blocco, non posso lasciare il blocco solido, perché mario si ferma comunque... Quindi come posso fare? Perché l'unica alternativa allora sarebbe non settare il blocco come solido e creare un sistema di collisioni mio. In ogni caso se avessi il tempo (e la voglia) di farmi un esempio di codice, te ne sarei grato. :)
una volta einstein disse:"potremmo toccare le stelle, se solo nn avessero tutte quelle guaardie del corpo..."
Immagine