dash movement in un platform shooter 2D

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
MickaelOrdine
Newbie
Messaggi: 1
Iscritto il: 30/06/2017, 12:14
Specialità: Beginner
Uso: GM:Studio 1.4 Standard
Contatta:

dash movement in un platform shooter 2D

Messaggio da MickaelOrdine »

Ciao ragazzi, suono nuovo di questo mondo e me ne so o già innamorato.
Vorrei dirvi un attimo quello che sto creando (praticamente da solo). Sto creando un platform shooting 2D e sto ancora facendo il gameplay, poi passerò a Sprite e background. Ho già fatto movimento, doublejump e la parte shooting ma vorrei creare un effetto dash dove è diretto il mouse. Per ora ho creato questo effetto dash ma più che altro è un blink dato che mi si teletrasporta dove indico. I problemi sono 3:
1. Vorrei che non fosse un teletrasporto ma un vero e proprio dash.
2. Una volta che ho Dashato non mi Dasha più, quindi vorrei fare che ogni volta che tocca il suolo possa Dashare ma non ci riesco.
3. A volte mi si bugga sui muri e ci si compenetra dentro, come mai?
Grazie a tutti quelli che mi risponderanno :heart:
PS: per chi sapesse come fare mi piacerebbe che mentre si clicchi il tasto per il dash il personaggio rimanesse bloccato in quel punto fino a quando non si rilasci il suddetto tasto (io pensavo di mettere il tasto destro del mouse).
Scusate se sono imbranato... ;(

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: dash movement in un platform shooter 2D

Messaggio da Jak »

Dipende un po dalle tue conoscenze di GM ma provo a darti un paio di dritte. In caso dimmi cosa non hai presente.
-Prima di tutto crea una variabile "dash_abilitato", questa variabile diventerà true (vero) oppure false (falso) in base ad essere abilitato o no a dashare.
-Ogni volta che effettui un dash (un tasto immagino) imposta questa variabile a false.
-Sull'evento di collisione con l'oggetto pavimento imposta la variabile a true.
In questo modo quanto tocca il suolo la variabile segnerà sempre il dash come disponibile viceversa quando non fa contatto diventa non disponibile subito dopo aver attivato il dash.
Sull'evento di pressione del tasto che attiva il dash mettici una condizione if che controllerà la variabile "dash_abilitato" per sapere se puoi dashare o meno.
Immagino usi la variabile speed per i movimenti, quando premi il tasto per dashare metti un valore di speed abbastanza alto. Poi usa un'alarm di durata identica a quella del dash, quando l'allarme scadrà gli reimposti la speed che usi normalmente.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: dash movement in un platform shooter 2D

Messaggio da doom13 »

Per la terza domanda prima ti spiego in due parole perché accade e due possibili soluzioni.
Se un oggetto si muove in orizzontale con speed 16, ad ogni step l'oggetto sarà spostato di 16 pixel questo significa che se tu sei per esempio alla posizione 100 (x =100) e un muro si trova a 108, con uno spostamento di 16 pixel ti ritroverai a 116 ovvero dentro il muro.
Per risolvere il problema ci sono due soluzioni generali, finire dentro il muro e poi aggiustare la posizione riportando l'oggetto compenetrato indietro oppure prevenire la compenetrazione che in genere è la scelta migliore.
Per quanto riguarda la seconda opzione se sei in un platform non dovresti avere molti problemi, semplicemente ad ogni step verifichi che spostandoti avanti di tanti pixel quant'è la velocità (chiaramente tenendo in considerazione la direzione) non ci sia nessun muro, in tal caso lo spostamento può effettivamente avvenire altrimenti no.

Spero sia abbastanza chiaro altrimenti chiedi :cappa:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: dash movement in un platform shooter 2D

Messaggio da ZerA78 »

Ciao. se non ricordo male dovresti lavorare anche sulla bounding box dello sprite perche' e' quella che determina la collisione fra istanze. Mi sembra che c'e' l'opzione "precisa". oppure puoi crare un rettangolo che includa giusto giusto il tuo personaggio
Immagine

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: dash movement in un platform shooter 2D

Messaggio da Barnack »

"precisa" non risolve in alcun modo nessuna delle questioni poste da chi ha scritto il topic, oltre al fatto che è un'opzione che riduce le performances e da evitare salvo casi particolari

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 121 ospiti