Problema con le collisioni

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Problema con le collisioni

Messaggio da Emanuele »

Salve,mi presento:mi chiamo Emanuele e sono un ragazzo alle prime armi con Game Maker.
Il mio videogioco è costituito da un personaggio(un semplice cubo) e un terreno fatto da uno strato d'erba e uno più in profondità di terra.
Creando un muro ho scoperto che il personaggio lo trapassa perfettamente come se non ci fosse niente avanti ma se ci cammina sopra funziona.
Il problema è che ho settato la collision mask ma niente, ho cercato su internet e sul forum ma niente ancora .
Come devo fare?
Grazie in anticipo
Houston we have a problem:There is a noob!

Avatar utente
Willshir3
Membro
Messaggi: 228
Iscritto il: 28/06/2014, 16:23
Uso: GM:Studio 2
Contatta:

Re: Problema con le collisioni

Messaggio da Willshir3 »

Devi come minimo riportare qua il codice che hai usato altrimenti è difficile aiutarti, inoltre mi pare di capire che il tuo sia un gioco con impostazione 2d laterale.

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

Re: Problema con le collisioni

Messaggio da Alv »

Salve! Ho fatto l'upload del vecchio tutorial di Game Maker per giochi platform, ti mando il link:
http://alv90.altervista.org/stor/platform.zip

A me è stato molto utile per comprendere come realizzare platform, quindi mi sento di consigliartelo. Lo puoi importare in GMS.

Il trucco consiste nel trattare il movimento lungo l'asse x separatamente rispetto al movimento lungo l'asse y.

Il movimento x è semplice: se il giocatore preme freccia a destra e la posizione subito a destra rispetto a quella attuale è libera, sposta il giocatore. Quindi viene fatto un controllo PRIMA dello spostamento.

Il movimento y invece fa uso delle variabili built-in per la fisica (gravity, speed, eccetera). Queste variabili causano il movimento dell'oggetto automaticamente, senza che ci sia bisogno di cambiarne la posizione esplicitamente.

Per evitare che il giocatore entri nel muro, basta impostare l'evento Collision with muro. Se l'oggetto muro è solid e scatta l'evento collisione, l'oggetto player viene riposizionato nell'ultima posizione precedente la collisione. Poi viene eseguito il codice contenuto nell'evento (che potrebbe ad esempio correggere le variabili gravity e vspeed). Infine, viene fatto di nuovo uno step in avanti (stavolta con le nuove velocità), che però non causerà altri eventi collision nello step attuale anche in caso di collisione.
Ultima modifica di Alv il 03/01/2021, 18:19, modificato 6 volte in totale.

Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Re: Problema con le collisioni

Messaggio da Emanuele »

Grazie mille è che sono nuovo e tendo ad usare il sistema Drag and drop perché non so niente di programmazione.
Credo che leggerò quel manuale che mi ha linkato Alv e seguirò il suo consiglio.
Se avrò altri problemi vi aggiornerò.
Ps. ho provato a usare il codice di Shaun Splendning (spero si dica così :lol: ) ma mi dava un errore e l'editor del codice era impazzito.
Però avrei una piccola dimanda:più specificatamente cosa potrei scrivere nell' evento di collisione,perché tutti i comandi li tengo nell' evento step.(scusate per la mia ignoranza in materia ma sono veramente all'iall'inizio
Houston we have a problem:There is a noob!

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

Re: Problema con le collisioni

Messaggio da Alv »

Sì, anch'io all'inizio mettevo tutto in Step. Per cose semplici, col drag and drop puoi ottenere gli stessi risultati che otterresti con degli script.

Nell'evento collisione, dovresti azzerare la velocità verticale (vspeed), in quanto c'è stato un urto col terreno. Poi fai un move_contact_solid verso il basso, in modo da allineare il giocatore col blocco terreno. Nello step invece dovresti impostare la gravità: se sotto il giocatore c'è il terreno, gravity dovrebbe essere 0, altrimenti un numero da decidere (es. 0,5).

Così ti dovrebbe venire un movimento platform perfetto.
Ultima modifica di Alv il 30/12/2020, 22:30, modificato 4 volte in totale.

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

Re: Problema con le collisioni

Messaggio da gameplay_extreme »

e passato del tempo... comunque
Il trucco consiste nel trattare il movimento lungo l'asse x separatamente rispetto al movimento lungo l'asse y
concordo, ricordo la prima volta che provai a fare un platform, con l'icona "move" anziche con le 2 componenti di spostamento gestite separatamente...rimasi piuttosto deluso dal risultato

dopo aver capito che dovevo considerare separatamente le componenti di spostamento...
senza usare nessun tutorial se non logica, esperimenti fatti per conto mio ed un occhio agli esempi integrati
feci questo:
https://www.youtube.com/watch?v=gg4keDiwCr0

a parte che era molto semplice...il problema era che il pavimento era un semplice disegno appoggiato: se ci fossero sati dei buchi nel terreno (o dei gradini) nessun personaggio (neanche il pg) avrebbe potuto interagirci.

poi incontrai questo videotutorial che mi risolse il problema...

https://www.youtube.com/watch?v=StlP7a6 ... FD59494B84

ammetto che all' inizio c'erano alcune cose che non mi erano chiare...
ad esempio
1)perchè gli oggetti solid a volte sono attrvaersabili a volte no...che senso ha e da cosa dipende ?
2)perchè il tutorial diceva di mettere, una volta che il pg era entrato il collisione con il terreno di allinearlo a 270 gradi? così non sarebbe dovuto scendere ancora più in basso ?
ma piano piano ci sono arrivato...

feci alcuni giochi basati su quel semplice tutorial (che spiega le basi stette). Per esempio, Uno degli ultimi che feci era questo
https://www.youtube.com/watch?v=hNEqe20KLV8
Salve! Ho fatto l'upload del vecchio tutorial di Game Maker per giochi platform
tempo fa feci anche io l' upload del tutorial per platform2D di Mark Overmars!
EDIT: la versione che ho uploadato io è in italiano...non mi ricordavo...

http://giochi3.altervista.org/GMItalia/ ... atform.zip

per la cronaca (non vorrei farti confusione...comunque...) ricordo che esistevano anche degli engine avanzati fatti con game maker: l' hello engine (clone di super Mario) e lo script di brain 'brod' rodriguez (se non sbaglio entrambi supportano salite, discese e friction).
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)

Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Re: Problema con le collisioni

Messaggio da Emanuele »

Grazie mille ragazzi,mi fa piacere che altre persone abbiano riscontrato il mio stesso problema e l'abbiano risolto.
Grazie di tutto siete veramente gentilissimi. :D
Se avrò altri problemi vi aggiornerò ma non credo che ne avrò.
Grazie ancora e arrivederci.
Houston we have a problem:There is a noob!

Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Re: Problema con le collisioni

Messaggio da Emanuele »

Scusate se sono un po' assillante ma avrei un'altra domanda:come posso fare in modo che il mio personaggio non si incastri,bensì salga,su una scala a gradini (Non a pioli)?
L'oggetto in questione sarebbe una specie di rampa.
Houston we have a problem:There is a noob!

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

Re: Problema con le collisioni

Messaggio da gameplay_extreme »

Se non sbaglio nel tutorial che ti abbiamo linkato io e alv c'è scritto...
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)

Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Re: Problema con le collisioni

Messaggio da Emanuele »

L'ho notato ma non so il perché non funziona.
Non è che avreste uno script per fare la stessa azione?
Houston we have a problem:There is a noob!

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

Re: Problema con le collisioni

Messaggio da Alv »

Io lo realizzerei in questo modo:

Codice: Seleziona tutto

if (place_free(x+vx,y))
    x+=vx;
else if (place_free(x+vx,y-16)) {
    x+=vx;
    y-=16; 
    move_contact_solid(270,-1);
}
vx è una velocità costante che imposti in base alla pressione dei tasti sinistra e destra. Se la posizione subito a sinistra/destra è libera, sposta.

Te lo riscrivo in pseudocodice:

Codice: Seleziona tutto

se la posizione (x+vx, y) è libera:
    incrementa x di vx
altrimenti, se la posizione (x+vx, y-16) è libera:
    incrementa x di vx
    decrementa y di 16
    move_contact_solid(270,-1)
Ultima modifica di Alv il 09/01/2021, 21:37, modificato 4 volte in totale.

Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Re: Problema con le collisioni

Messaggio da Emanuele »

Ma non dovrei specificare prima cos' è vx?
Perché mi da un errore.
Houston we have a problem:There is a noob!

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

Re: Problema con le collisioni

Messaggio da Alv »

Emanuele ha scritto:Ma non dovrei specificare prima cos' è vx?
Perché mi da un errore.
Certo: devi specificarla prima, in base alla pressione dei tasti sinistra/destra (vx è la velocità lungo l'asse x, può essere sia positiva che negativa). Il vantaggio è che usando la variabile puoi evitare di ripetere due volte il codice per il movimento verso sinistra e verso destra.

Nel create metti vx=0.
Pressione tasto sinistro: vx=-4.
Pressione tasto destro: vx=4.
Ultima modifica di Alv il 30/12/2020, 22:31, modificato 5 volte in totale.

Emanuele
Newbie
Messaggi: 22
Iscritto il: 06/07/2017, 21:57
Specialità: Studente
Uso: GM:Studio 1.4 Standard
Località: Torre Del Greco(NA)
Contatta:

Re: Problema con le collisioni

Messaggio da Emanuele »

Ah.. ho capito:è facile in fondo.
Grazie di tutto.

EDIT:ho provato e il codice va ma il problema è che il personaggio,se clicco destra/sinistra,va DA SOLO a destra/sinistra anche quando ho lasciato il tasto e se mentre si muove premo destra/sinistra non fa altro che aumentare la velocità.
Houston we have a problem:There is a noob!

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 112 ospiti