Ho un problema con delle scale

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:

Ho un problema con delle scale

Messaggio da Emanuele »

Salve,sto creando un platform in stile Super Mario e vorrei creare delle scale (non a pioli ma a gradini) ma non so come fare.
Potreste aiutarmi?
Houston we have a problem:There is a noob!

Avatar utente
Simsure
Membro
Messaggi: 223
Iscritto il: 13/09/2013, 21:54
Specialità: Programmazione
Uso: GM:Studio 2
Località: dietro di te...
Contatta:

Re: Ho un problema con delle scale

Messaggio da Simsure »

Dipende un pò da come stai gestendo il movimento del personaggio,io per esempio spesso uso una cosa del genere.

Codice: Seleziona tutto

if keyboard_check(vk_right) && place_free(x+1,y)
{x+=1}
Cioè se il primo pixel a destra è libero,sposta l'omino li.

Ora se per esempio le tue scale sono disegnate 32x32 e ogni gradino è alto e largo 2x2 (ovviamente la collisione della scala nello sprite dovrà essere impostata a "precise" in modo da identificare ogni singolo gradino),l'omino dovrà controllare di spostarsi non piu di un pixel a destra,ma di 2 verso destra e due verso l'alto,per salire effettivamente un gradino.

Quindi una cosa del genere

Codice: Seleziona tutto

if keyboard_check(vk_right) && place_free(x+2,y-2)
{x+=2 y-=2}}
Questo è semplificato al massimo,e ovviamente andrebbe rivisto in base a come fai muovere il personaggio,però dovrebbe funzionare.

infine molto grezzamente se vuoi farlo muovere piu velocemente,basta un "repeat" prima del comando e lui lo eseguirà al doppio della velcità.

Codice: Seleziona tutto

repeat(2)
{
	if keyboard_check(vk_right) && place_free(x+2,y-2)
	{x+=2 y-=2}}
}
Ciaù
Immagine
Spoiler
Immagine

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: Ho un problema con delle scale

Messaggio da Emanuele »

Le mie scale sarebbero dei triangoli 32x32 semplicemente un blocco pieno tagliato a metà sull' asse diagonale:quindi dovrei fare...
repeat(2)
{
if keyboard_check(vk_right) && place_free(x+1,1)
{x+=1 y-=1}}
}
Cioè al posto del 2 ho messo 1 ok ogni gradini e un pixel giusto?
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: Ho un problema con delle scale

Messaggio da Alv »

Potresti fare:

Codice: Seleziona tutto

if keyboard_check(vk_right) && place_free(x+1,y-8)
{
	x+=1
	move_outside_solid(90)
}
Ultima modifica di Alv il 25/12/2020, 15:12, modificato 2 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: Ho un problema con delle scale

Messaggio da Emanuele »

Grazie,domani provo
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: Ho un problema con delle scale

Messaggio da Emanuele »

Alv ha scritto:potresti fare:

Codice: Seleziona tutto

if keyboard_check(vk_right) && place_free(x+1,y-8)
{
	x+=1
	move_outside_solid(90)
}
Mi dice:ERROR at line 6 pos 26 Wrong number of arguments to funcion or script.
Non ne ho capito molto ma credo che sia il "90" che hai scritto a dare l'errore.
Ripeto:non ne capisco molto :asd:
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: Ho un problema con delle scale

Messaggio da Alv »

Emanuele ha scritto:
Alv ha scritto:potresti fare:

Codice: Seleziona tutto

if keyboard_check(vk_right) && place_free(x+1,y-8)
{
	x+=1
	move_outside_solid(90)
}
Mi dice:ERROR at line 6 pos 26 Wrong number of arguments to funcion or script.
Non ne ho capito molto ma credo che sia il "90" che hai scritto a dare l'errore.
Ripeto:non ne capisco molto :asd:
Sì, l'ho scritto di fretta. L'idea è di spostare l'oggetto (x+=1, finisce dentro il blocco scala), quindi usare move_outside_solid per farlo uscire (correggere la coordinata y). Novanta gradi significa verso l'alto.

Questo è il comando corretto:

Codice: Seleziona tutto

move_outside_solid(90,-1)
Nella documentazione puoi trovare i dettagli su tutti i metodi. move_outside_solid prende 2 parametri (i parametri si separano con la virgola).
Ultima modifica di Alv il 21/12/2020, 21:27, modificato 3 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: Ho un problema con delle scale

Messaggio da Emanuele »

Ah,non lo sapevo.
Dato che non ho neanche iniziato a fare programmazione a scuola non ne capisco molto ma grazie alle vostre spiegazioni sto facendo molto progressi quindi grazie mille :D .
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: Ho un problema con delle scale

Messaggio da Alv »

Di nulla. ;)
Ultima modifica di Alv il 30/11/2020, 0:00, modificato 1 volta 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: Ho un problema con delle scale

Messaggio da Emanuele »

Avrei un'altra domanda ma non vorrei aprire un altro post:Come posso creare uno score simile a quello predefinito ma con i codici(perché ne ho già messo uno e quindi si bugga quando ne creo un altro)
Praticamente voglio fare che quando la xp (global.xp)
raggiunge il massimo
(global.xpmax)
aggiunge un livello ad un tabellone (una cosa semplice come in alto al centro una scritta"livello"ed il numero del livello.
In più vorrei che ogni volta che avanzo di livello il limite massimo di xp (global.xpmax) aumenta di 50.
Spero di essermi spiegato bene. :roll:
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: Ho un problema con delle scale

Messaggio da Emanuele »

Qualcuno potrebbe rispondermi per favore :|
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: Ho un problema con delle scale

Messaggio da Alv »

Ti serve un'altra variabile globale per il livello.

Io ti consiglio di creare uno script per l'avanzamento di livello (sarebbe un pezzo di codice che viene eseguito su richiesta). Quindi, quando il giocatore acquisisce esperienza:

Codice: Seleziona tutto

global.xp+=5;
check_xp();
Lo script check_xp:

Codice: Seleziona tutto

if (global.xp>=global.xpmax) {
    global.xp-=global.xpmax;
    global.xpmax+=50;
    global.level+=1;
    mostra_scritta("il tuo livello è "+global.level);
}
mostra_scritta potrebbe essere un altro script che crea un oggetto scritta. L'oggetto scritta disegna il testo specificato. Per fare un oggetto che stampa del testo, nell'evento Draw dell'oggetto devi mettere:

Codice: Seleziona tutto

draw_text(x,y,testo_da_stampare);
Ultima modifica di Alv il 09/01/2021, 21:38, 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: Ho un problema con delle scale

Messaggio da Emanuele »

Grazie , ma vorrei un piccolo chiarimento :
Devo creare uno script che si chiama mostra_scritta (o come lo voglio chiamare io)e devo metterlo in un oggetto nell' evento draw?
Ho capito bene?
E a proposito:
Devo prenderlo alla lettera questa volta perché ho appena provato e mi da un errore (la scritta c è ma appena raggiungo il massimo di xp crasha)

EDIT:ho risolto il problema ho aggiunto string per fare in modo che global.level facesse vedere il numero vicino alla frase
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: Ho un problema con delle scale

Messaggio da Alv »

Emanuele ha scritto:EDIT:ho risolto il problema ho aggiunto string per fare in modo che global.level facesse vedere il numero vicino alla frase
:sisisi: Allora, mostra_scritta potrebbe essere uno script che, come dice il nome, fa comparire una scritta nello schermo (magari per un tempo limitato, puoi farla scomparire impostando un timer).

Quindi mostra_scritta lo devi chiamare quando effettivamente vuoi fare comparire la scritta in schermo. In alternativa, al posto di mostra_scritta, puoi mettere del codice che si occupa direttamente di creare un oggetto scritta. Ti consiglio questa soluzione, per te che sei alle prime armi.

Quindi metti:

Codice: Seleziona tutto

instance_create(20,20,ob_scritta_levelup);
L'oggetto ob_scritta_levelup deve mostrare del testo, quindi dev'essere programmato per fare questo. Crea l'evento Draw, e nell'evento Draw metti:

Codice: Seleziona tutto

draw_text(x,y,"Ottenuto livello "+string(global.level));
Le stringhe sono sequenze di caratteri, possono essere concatenate con +. Quindi stiamo convertendo global.level in una stringa e facendo la concatenazione con "Ottenuto livello ". Se il livello è 3, la stringa risultante sarà: "Ottenuto livello 3".
Ultima modifica di Alv il 03/01/2021, 20:33, modificato 8 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: Ho un problema con delle scale

Messaggio da Emanuele »

Grazie per la dritta ma....
Forse è una cosa un po' difficile da fare però ci provo.
Si può fare in modo che quando appare la scritta appare personalizzata cioè come la disegno io tipo su paint o altri programmi?
E a proposito come si crea un timer
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: Ho un problema con delle scale

Messaggio da Alv »

Emanuele ha scritto:Grazie per la dritta ma....
Forse è una cosa un po' difficile da fare però ci provo.
Si può fare in modo che quando appare la scritta appare personalizzata cioè come la disegno io tipo su paint o altri programmi?
E a proposito come si crea un timer
Potresti settare la font. Ti consiglio comunque di seguire qualche tutorial su Game Maker.
Ultima modifica di Alv il 30/11/2020, 0:02, modificato 1 volta 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: Ho un problema con delle scale

Messaggio da Emanuele »

Ciao ancora ragazzi, potreste cortesemente spiegarmi come si crea una animazione.
Il fatto è che non mi sono chiare le funzioni come image_index ecc.
Si Di conseguenza non saprei come fare.
Grazie in anticipo
Houston we have a problem:There is a noob!

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 145 ospiti