Codice: Seleziona tutto
global.conta_passi+=1;
Codice: Seleziona tutto
if (place_snapped(32, 32))
{
hspeed = 0;
vspeed = 0;
if (key_dx)
{
hspeed = 4;
vspeed = 0;
global.p_passi+=1;
}
if (key_sx)
{
hspeed = -4;
vspeed = 0;
global.p_passi+=1;
}
if (key_su)
{
hspeed = 0;
vspeed = -4;
global.p_passi+=1;
}
if (key_giu)
{
hspeed = 0;
vspeed = 4;
global.p_passi+=1;
}
}
Codice: Seleziona tutto
if (place_snapped(32, 32))
{
hspeed = 0;
vspeed = 0;
global.p_passi-=1;
}
Si il problema è proprio questo.Scario ha scritto:Non so se ho ben capito il problema: il controllo delle collisioni funziona con gli elementi statici ma non con (ad esempio) gli npc quando camminano?
Ciao! La soluzione che ti ho proposto non è il massimo della semplicità: è possibile che ci siano dei bug. Per debuggare, ti conviene rendere l'oggetto marcatore temporaneamente visibile.Kimera_V2 ha scritto:Niente non vuole saperne di funzionare
I passi che ho fatto sono questi:
- creato l'object o_ck_cella per il controllo della cella
- alla pressione del tasto sposto l'object o_ck_cella nella direzione in cui deve spostarsi il player
-l'object o_ck_cella controlla se la cella è occupata con la funzione collision_rectangle
-se la cella è occupata il player non si muove se non lo è si muove
Conclusioni a volte funziona a volte no
credo che il problema sta nel fatto che se l object non è allineato con la griglia il controllo non funziona.
Codice: Seleziona tutto
if (key_sx && !place_meeting(x-32,y,o_ck_cella))
{
hspeed = -4;
vspeed = 0;
my_cella.x-=32;
global.p_passi+=1;
}
Codice: Seleziona tutto
// crea un oggetto di tipo o_ck_cella e salva l'id in my_cella
my_cella=instance_create(x,y,o_ck_cella);
Codice: Seleziona tutto
// elimina l'oggetto o_ck_cella associato al personaggio
with (my_cella)
instance_destroy();
Codice: Seleziona tutto
if (place_snapped(32, 32))
Grazie mille appena posso lo provoAlv ha scritto:Ok ho realizzato un esempio editabile (funzionante).
Tasti giocatore 1: frecce
Tasti giocatore 2: WASD
http://alv90.altervista.org/stor/Project3.gmx.zip