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 ️
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... ;(
dash movement in un platform shooter 2D
-
- Newbie
- Messaggi: 1
- Iscritto il: 30/06/2017, 12:14
- Specialità: Beginner
- Uso: GM:Studio 1.4 Standard
- Contatta:
-
- 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
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.
-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
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
- 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
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
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
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
Re: dash movement in un platform shooter 2D
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
-
- 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
"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
Chi c’è in linea
Visitano il forum: Nessuno e 150 ospiti