La funzione è molto semplice: basta passare come argomenti la direzione del movimento e lo spostamento massimo che il personaggio può eseguire.
Eventualmente, per semplificare le cose, si possono creare 2 script molto utili:
Script xmove:
Codice: Seleziona tutto
// muove l'oggetto a sinistra
if (argument0<0) move_contact_solid(180,-argument0);
// muove l'oggetto a destra
else if (argument0>0) move_contact_solid(0,argument0);
Codice: Seleziona tutto
// muove l'oggetto verso l'alto
if (argument0<0) move_contact_solid(90,-argument0);
// muove l'oggetto verso il basso
else if (argument0>0) move_contact_solid(270,argument0);
Codice: Seleziona tutto
if (keyboard_check(vk_left)) xmove(-2);
else if (keyboard_check(vk_right)) xmove(2);
Codice: Seleziona tutto
yCam=false;
// gestisce il salto
if (keyboard_check(vk_up) && !place_free(x,y+1))
{
if (yVel>=0) yVel=-7;
}
// applica la gravità
yVel+=0.5;
// limite velocità di caduta
yVel=min(yVel,7);
// muove il giocatore
ymove(yVel);
// sbatte la testa
if (yVel<0)
{
if (place_free(x,y-1)) yCam=true;
else yVel=1;
}
// azzera la velocità
if (yVel>=0)
{
if (place_free(x,y+1)) yCam=true;
else yVel=0;
}
Ovviamente i codici dei movimenti x e y vanno nell'evento Step del giocatore. Bisogna inoltre definire yVel e yCam nell'evento Create.
Codice: Seleziona tutto
yVel=0;
yCam=false;
http://gmitalia.altervista.org/gmi_foru ... 203#p26203