Check del warp col muro

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Check del warp col muro

Messaggio da Kami_Ender »

Ciao ragazzi, sono ancora qui xD ... mi servirebbero dei consigli per un codice che controlli che quando premo il tasto di warp (del player), il gioco non me lo faccia fare se dovessi finire contro il muro. Forse non mi sono spiegato bene, sorry... Grazie a chiunque risponda ;)

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Check del warp col muro

Messaggio da Vallo92 »

Codice: Seleziona tutto

if (position_empty(xx, yy)) {
    x = xx;
    y = yy;
}
Tradotto: Se alle coordinate xx, yy non c'è niente allora sposta l'oggetto alle coordinate xx, yy.
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Check del warp col muro

Messaggio da Kami_Ender »

Dove devo mettere questo codice? Per caso dove faccio i check per controllare se il tasto del warp è stato premuto?
Tipo:

Codice: Seleziona tutto

if (keyboard_check_pressed(ord("W"))) && (position_empty (xx,yy))
{
x = xx ;
y = yy ;
obj_player.y  -= 50;
}
Giusto? :cappa: :cappa:

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Check del warp col muro

Messaggio da Vallo92 »

Non ti rimane che testare. :asd:

P.S.
Perché hai inserito quel "obj_player.y -= 50;"? Se controlli una determinata posizione, e poi vuoi spostare il player a y-50 rispetto a quella posizione, il controllo non ha più senso... E comunque puoi risparmiarti quella riga modificando quella precedente con "Y = yy-50;".
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Check del warp col muro

Messaggio da Kami_Ender »

Ok, grazie ;)

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Check del warp col muro

Messaggio da Kami_Ender »

Scusami, Vallo92, provo a essere più chiaro...il mio personaggio una volta preso un powerup chiama uno script per il teletrasporto in cui viene detto che cliccando W il mio personaggio si teletrasporta di 100 px. verso l'alto solo se la posizione in cui andrà è vuota...e così via per tutte e 4 le direzioni... il codice che ho scritto è questo, ma funziona solo se non inserisco il check position_empty... puoi aiutarmi per favore? :cappa:

Codice: Seleziona tutto

var xx,yy ;

if (keyboard_check_pressed(ord("W"))) && (position_empty(xx,yy))
{
     x = xx ;
     y = yy - 50 ;
}
//Eccetera eccetera per tutte le direzioni, come ho detto 

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Check del warp col muro

Messaggio da Vallo92 »

Prova a rileggere il tuo codice attentamente. Hai assegnato dei valori a xx e yy? Se non lo hai fatto come fa GM a sapere che posizione deve controllare? ;)
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Check del warp col muro

Messaggio da Kami_Ender »

Quindi prima dell' if devo aggiungere xx = x e yy = y? E nell'if elimino la coordinata che non serve per quella posizione e scrivo yy -= 50? Non credo vada bene ma spero ci sia speranza xD. Che dici? ;) Grazie tante.

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Check del warp col muro

Messaggio da Vallo92 »

Se imposti xx = x e yy = Y, al momento del controllo il "position_empty" controllerà le coordinate del pg che aveva hai assegnato il valore alle variabili.... Così non funzionerà.
Non è che non voglio spiattellarti la soluzione da copiare e incollare perché sono cattivo, ma visto che il procedimento è molto semplice, sto cercando di spronarti a ragionare e capire quello che devi fare.

Proviamo a fare una cosa: Sapendo che puoi utilizzare un "position_empty" per risolvere il tuo problema, prova a pensare e a scrivere un codice a parole. Qualcosa del genere:

Codice: Seleziona tutto

Inizializzo le variabili xx e yy
Controllo la pressione del tasto W
Se il tasto W è premuti allora... etc
Vediamo se riusciamo a trovare la soluzione in questo modo insieme. Una volta trovata la soluzione a parole trasformeremo tutto in codice! ;)
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Check del warp col muro

Messaggio da Kami_Ender »

In quanto a gentilezza e cortesia non vi batte nessuno su questo forum...non so come ringraziarti ;) :cappa:

se il tasto W è stato premuto e la posizione che il player OCCUPERA' (non occupa...forse la scoperta più grande che abbia mai fatto ;) xD) è vuota
{
diminuisci la coordinata y di 100
}

ergo :

Codice: Seleziona tutto

var xx,yy ;
if (keyboard_check_pressed(ord("W"))) && position_empty (xx,yy-100)
{
     y-= 100 ;
}
Forse è l'ennesimo tentativo fallito, sorry se ti faccio perdere un po' di tempo :(

Avatar utente
dt_3_dt
Membro super
Messaggi: 608
Iscritto il: 03/10/2010, 16:47
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Check del warp col muro

Messaggio da dt_3_dt »

Kami_Ender ha scritto:In quanto a gentilezza e cortesia non vi batte nessuno su questo forum...non so come ringraziarti ;) :cappa:

se il tasto W è stato premuto e la posizione che il player OCCUPERA' (non occupa...forse la scoperta più grande che abbia mai fatto ;) xD) è vuota
{
diminuisci la coordinata y di 100
}

ergo :

Codice: Seleziona tutto

var xx,yy ;
if (keyboard_check_pressed(ord("W"))) && position_empty(xx,yy-100)
{
     y-= 100 ;
}
Forse è l'ennesimo tentativo fallito, sorry se ti faccio perdere un po' di tempo :(
le variabili xx e yy non ti servono basta che fai così:

Codice: Seleziona tutto

if (keyboard_check_pressed(ord("W"))) && position_empty (x,y-100) {
     y -= 100 ;
}
EDIT: nel codice sopra le parentesi dell'if vengono chiuse troppo presto, giuste sarebbero così:

Codice: Seleziona tutto

if (keyboard_check_pressed(ord("W")) && position_empty (x,y-100)) {
     y -= 100 ;
}
Ultima modifica di dt_3_dt il 11/09/2015, 8:05, modificato 1 volta in totale.

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Check del warp col muro

Messaggio da Kami_Ender »

Vabbè il mio codice era comunque corretto giusto? ;) Comunque grazie, e grazie soprattutto a Vallo che ha avuto la pazienza dicfarmi ragionare

Avatar utente
dt_3_dt
Membro super
Messaggi: 608
Iscritto il: 03/10/2010, 16:47
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Check del warp col muro

Messaggio da dt_3_dt »

Kami_Ender ha scritto:Vabbè il mio codice era comunque corretto giusto? ;) Comunque grazie, e grazie soprattutto a Vallo che ha avuto la pazienza dicfarmi ragionare
Era sbagliato perché non assegnavi nessun valore ad xx e yy, per essere giusto doveva essere così

Codice: Seleziona tutto

var xx = x,yy = y;
if (keyboard_check_pressed(ord("W")) && position_empty (xx,yy-100)) {
     y-= 100 ;
}
:cappa:

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: Check del warp col muro

Messaggio da Vallo92 »

Nel post iniziale non avevi specificato che il pg si doveva spostare semplicemente di y-100, quindi stavo adottando un altro sistema. Il codice di dt è perfetto e non devi nemmeno utilizzare le variabili xx e yy che non riuscivi a capire! :asd:
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 113 ospiti