Saltare e gravità

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
avatar
Johnny 97
Newbie
 
Iscritto il: 30/08/2010, 7:49
Specialità: Creo Storie

Messaggiodi Johnny 97 » 30/08/2010, 8:25

Vorrei far saltare il mio personaggio, ma non so come fare...
e dovrei anche impostare la gravità in modo che quando salta cade e quando tocca un oggetto solido si ferma la caduta e può continuare a camminare...
Webu, prima o poi ti ucciderò!!!

Progetti:
Scavi Archeologici (Tool RPG Maker VX)
Mostra spoiler
http://www.rpg2s.net/forum/index.php?showtopic=10993

Crash Bandicoot: A New Adventure (Tool Game Maker 8)
Yeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!
O voi che avete firme serie non sapete quant'è bello avere firme inutili

Avatar utente
cp94
GMI Advanced
 
Iscritto il: 04/07/2009, 19:18
Località: Brescia
Specialità: Quasi tutto

Messaggiodi cp94 » 30/08/2010, 9:12

Codice: Seleziona tutto
if !place_free(x,y+1)
{
vspeed=-9;
gravity=0.5
}

questo codice lo metti nell' evento keyboard press del tasto che vuoi usare per saltare :)
e nell' evento di collisione col pavimento devi aggiungere
Codice: Seleziona tutto
vspeed=0
gravity=0

Avatar utente
Feschio
Membro d'elite
 
Iscritto il: 02/07/2010, 8:19

Messaggiodi Feschio » 30/08/2010, 10:01

oppure, in icone
Immagine e con questo impostti la gravita.
poi nell'evento di collisione con il pavimento metti Immagine
e clicki sulla freccina in giù e imposti come velocità 0
per saltare metti Immagine l'oggetto è il muro ed imposti per esempio se il tuo pg ha 32 di altezza imposti x+32 relativo
poi aggiungi di nuovo Immagine e clicki la freccina su con la speed che vuoi
Valta Korpiklaani! Finlandia Rulez

Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?

Avatar utente
cp94
GMI Advanced
 
Iscritto il: 04/07/2009, 19:18
Località: Brescia
Specialità: Quasi tutto

Messaggiodi cp94 » 30/08/2010, 10:07

Feschioide ha scritto:oppure, in icone
Immagine e con questo impostti la gravita.
poi nell'evento di collisione con il pavimento metti Immagine
e clicki sulla freccina in giù e imposti come velocità 0
per saltare metti Immagine l'oggetto è il muro ed imposti per esempio se il tuo pg ha 32 di altezza imposti x+32 relativo
poi aggiungi di nuovo Immagine e clicki la freccina su con la speed che vuoi

:NO: non puoi fare un salto con Immagine
devi usare
Immagine var: vspeed; value: -9;
e per stoppare la stessa icona con var: vspeed; value: 0.
per controllare se esiste il pavimento, invece:
Immagine, va bene anche Immagine ma la prima funziona anche se sei su qualcosa d'altro che il pavimento, tipo una piattaforma.
ps: e poi è y+32, non x+32, e se scrivi x+ o y+ non serve relative perchè scrivendo y+ è gia un relative! ;)

avatar
Johnny 97
Newbie
 
Iscritto il: 30/08/2010, 7:49
Specialità: Creo Storie

Messaggiodi Johnny 97 » 30/08/2010, 16:31

ok, grazie cp94, credo che userò il tuo "script" :fapensare:
Webu, prima o poi ti ucciderò!!!

Progetti:
Scavi Archeologici (Tool RPG Maker VX)
Mostra spoiler
http://www.rpg2s.net/forum/index.php?showtopic=10993

Crash Bandicoot: A New Adventure (Tool Game Maker 8)
Yeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!
O voi che avete firme serie non sapete quant'è bello avere firme inutili

Avatar utente
Feschio
Membro d'elite
 
Iscritto il: 02/07/2010, 8:19

Messaggiodi Feschio » 30/08/2010, 16:43

cp94 ha scritto:
Feschioide ha scritto:oppure, in icone
Immagine e con questo impostti la gravita.
poi nell'evento di collisione con il pavimento metti Immagine
e clicki sulla freccina in giù e imposti come velocità 0
per saltare metti Immagine l'oggetto è il muro ed imposti per esempio se il tuo pg ha 32 di altezza imposti x+32 relativo
poi aggiungi di nuovo Immagine e clicki la freccina su con la speed che vuoi

:NO: non puoi fare un salto con Immagine
devi usare
Immagine var: vspeed; value: -9;
e per stoppare la stessa icona con var: vspeed; value: 0.
per controllare se esiste il pavimento, invece:
Immagine, va bene anche Immagine ma la prima funziona anche se sei su qualcosa d'altro che il pavimento, tipo una piattaforma.
ps: e poi è y+32, non x+32, e se scrivi x+ o y+ non serve relative perchè scrivendo y+ è gia un relative! ;)

io il salto l'ho sempre fatto con l'icona, per l'altro problema così sarebbe possibile saltare anche su cose sulle quali forse non si dovrebbe saltare, per l'ultimo problema, colpa mia xD
Valta Korpiklaani! Finlandia Rulez

Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?

Avatar utente
Stavros
GMI Advanced
 
Iscritto il: 24/02/2010, 20:03
Località: QDMA12
Specialità: PixelArt - Grafica

Messaggiodi Stavros » 30/08/2010, 17:02

Sti utenti nuovi, LEGGETE I TUTORIAL E SEGUITELI... Sti problemi non ci sarebbero

salto (keyboard UP)
Immagine 0, 1, relative
Immagine -6

gravità (step)
Immagine 0, 1, relative
Immagine 0.4
Immagine
Immagine 0

collisione con blocco (collision)
Immagine 0
Immagine direction, -1, only solid

Ti ho descritto con le icone come dovrebbe essere il tuo Personaggio: potresti aggiungere il controllo sulla velocità di caduta, onde evitare fastidiosi bug, il controllo sulle sprite per il salto...

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 26/01/2013, 19:24

cp94 ha scritto:
Codice: Seleziona tutto
if !place_free(x,y+1)
{
vspeed=-9;
gravity=0.5
}

questo codice lo metti nell' evento keyboard press del tasto che vuoi usare per saltare :)
e nell' evento di collisione col pavimento devi aggiungere
Codice: Seleziona tutto
vspeed=0
gravity=0

Scusate se riprendo questo post vecchio ma volevo ringraziarti per il codice dato che mi è stato davvero utile :)
poi volevo chiederti: come faccio a potermi muovere mentre salto usando i codici?
grazie in anticipo ;)

Avatar utente
gameplay_extreme
GMI VIP
 
Iscritto il: 13/11/2010, 16:23

Messaggiodi gameplay_extreme » 27/01/2013, 9:39

per lo spostamento orizzontale (sia mentre stai saltando oppure no) io di solito faccio una cosa del genre:
in create:
Codice: Seleziona tutto
x_sp = 4

in step:
Codice: Seleziona tutto
if (keyboard_check(vk_right) && place_free(x+x_sp,y))
 {
  x += x_sp
 }
if (keyboard_check(vk_left) && place_free(x-x_sp,y))
 {
  x -= x_sp
 }

questo funziona se l'oggetto parete è solid

se non si vuole usare solid bisogna fare:
Codice: Seleziona tutto
if (keyboard_check(vk_right) && !place_meeting(x+x_sp,y,parete))
 {
  x += x_sp
 }
if (keyboard_check(vk_left) && !place_meeting(x-x_sp,y,parete))
 {
  x -= x_sp
 }


PS: si ricorda che quando c'è una collisione con un oggetto solid viene eseguito automaticamente:
Codice: Seleziona tutto
x = xprevious
y = yprevious

quindi se si è partiti con degli oggetti solidi e adesso si vuole togliere la solidità potrebbe essere necessario aggiungere quelle 2 istruzioni...
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 !

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 13:10

Grazie mille :D

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 13:17

gameplay_extreme ha scritto:per lo spostamento orizzontale (sia mentre stai saltando oppure no) io di solito faccio una cosa del genre:
in create:
Codice: Seleziona tutto
x_sp = 4

in step:
Codice: Seleziona tutto
if (keyboard_check(vk_right) && place_free(x+x_sp,y))
 {
  x += x_sp
 }
if (keyboard_check(vk_left) && place_free(x-x_sp,y))
 {
  x -= x_sp
 }

questo funziona se l'oggetto parete è solid

se non si vuole usare solid bisogna fare:
Codice: Seleziona tutto
if (keyboard_check(vk_right) && !place_meeting(x+x_sp,y,parete))
 {
  x += x_sp
 }
if (keyboard_check(vk_left) && !place_meeting(x-x_sp,y,parete))
 {
  x -= x_sp
 }


PS: si ricorda che quando c'è una collisione con un oggetto solid viene eseguito automaticamente:
Codice: Seleziona tutto
x = xprevious
y = yprevious

quindi se si è partiti con degli oggetti solidi e adesso si vuole togliere la solidità potrebbe essere necessario aggiungere quelle 2 istruzioni...


Ho un problema,quando salto e atterro su un oggetto che si trova più in alto dell'oggetto da cui ho iniziato il salto,l'oggetto che dovrebbe saltare mi si blocca in aria :( come posso fare? se mi sono spiegato male posso inviarti anche uno screen.

Avatar utente
gameplay_extreme
GMI VIP
 
Iscritto il: 13/11/2010, 16:23

Messaggiodi gameplay_extreme » 27/01/2013, 13:21

cosi su 2 piedi non mi dice niente...
posta uno screen e un show information degli oggetti coinvolti...
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 !

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 13:31

Mostra spoiler
Immagine


codice del tasto up:
Codice: Seleziona tutto
if !place_free(x,y+1)
{
vspeed=-9;
gravity=0.5
}

codice collision with:
Codice: Seleziona tutto
vspeed=0
gravity=0

step e create ho messo uguale ai tuoi

Avatar utente
gameplay_extreme
GMI VIP
 
Iscritto il: 13/11/2010, 16:23

Messaggiodi gameplay_extreme » 27/01/2013, 13:43

dunque suppongo, dal difetto che mi dici, che le pareti siano "solid"

aggiungi in prima riga, in collision con parete
Codice: Seleziona tutto
move_contact_solid(direction,-1)

(se per lo spostamento orizzonatale utilizzi il mio metodo, quello con x += x_sp ecc.)

(se invece per il movimento orizzontale utilizzi hspeed)
aggiungi in prima riga, in collision con parete
Codice: Seleziona tutto
if (vspeed > 0)
 {
   move_contact_solid(270,-1)
 }
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 !

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 13:49

ok grazie ora funziona,e dato che mi sono stancato di dover chiedere ogni volta chiarimenti sui codici, sai se esiste una guida che spiega il linguaggio dei codici e altre cose?
perché per ora conosco solo alcune basi e mi piacerebbe imparare:)

Avatar utente
Xeryan
GMI VIP
 
Iscritto il: 06/05/2009, 9:52
Località: United Earth
Specialità: HTML5 and Coder
Uso: GM:Studio Master

Messaggiodi Xeryan » 27/01/2013, 13:57

Fillibis ha scritto:ok grazie ora funziona,e dato che mi sono stancato di dover chiedere ogni volta chiarimenti sui codici, sai se esiste una guida che spiega il linguaggio dei codici e altre cose?
perché per ora conosco solo alcune basi e mi piacerebbe imparare:)

Santo Manuale (F1 in gamemaker)
Il tuo cervello ha smesso di funzionare.
Impossibile riavviare l'applicazione.

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 14:02

ho riscontrato un altro problema,ecco cosa succede:
Mostra spoiler
Immagine


riesco a saltare sull'oggetto ma se dopo mi muovo orizzontalmente l'oggetto vola

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 14:03

Xeryan ha scritto:
Fillibis ha scritto:ok grazie ora funziona,e dato che mi sono stancato di dover chiedere ogni volta chiarimenti sui codici, sai se esiste una guida che spiega il linguaggio dei codici e altre cose?
perché per ora conosco solo alcune basi e mi piacerebbe imparare:)

Santo Manuale (F1 in gamemaker)


grazie :)

Avatar utente
gameplay_extreme
GMI VIP
 
Iscritto il: 13/11/2010, 16:23

Messaggiodi gameplay_extreme » 27/01/2013, 14:11

io risolverei così:
devi controllare continuamente sotto di te: se c'è il pavimento la gravità deve essere 0 se non c'è la gravità deve attivarsi (di solito io metto 0.5)

lascia perdere la gestione della gravita che avevi messo prima (= cancella o commenta le istruzioni che compongono la gestione della gravita che avevi precedentemente messo)

poi step del pg inserisci:
Codice: Seleziona tutto
if place_free(x,y+1)
 {
   gravity = 0.5
 }
else
 {
  gravity = 0
 }
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 !

Avatar utente
Fillibis
Newbie
 
Iscritto il: 04/12/2012, 13:45

Messaggiodi Fillibis » 27/01/2013, 14:53

grazie ora funziona :)


Torna a Domande e Risposte



Chi c’è in linea

Visitano il forum: Bing [Bot] e 2 ospiti