Collision con obj_solid:
Codice: Seleziona tutto
move_contact_solid(direction,12);
vspeed=0;
Codice: Seleziona tutto
//MOVIMENTO ORIZZONTALE
var keyL, keyR, keyUp;
WallSlowed=false; // WallSlowed è usato se il giocatore è attaccato ad un muro e quindi deve scendere lentamente
//
keyL=keyboard_check(vk_left);
keyR=keyboard_check(vk_right);
keyUp=keyboard_check_pressed(vk_up);
if keyL && spd > -maxSpd
spd-=0.2;
if keyR && spd < maxSpd
spd+=0.2;
if !keyL && !keyR && spd !=0
spd-=sign(spd) * 0.2;
//Muoviti
repeat( floor( abs(spd) ) )
{
if !place_meeting(x+sign(spd),y,obj_solid)
x += sign(spd);
else
{
spd=0;
if (!place_meeting(x,y+1,obj_solid) && vspeed >= 0) //Scendi lentamente se attaccato ad un muro
WallSlowed=true;
}
}
//MOVIMENTO VERTICALE
if keyUp
{
if place_meeting(x,y+1,obj_jump)
{
vspeed=-jumpHeight * instance_place(x,y+1,obj_jump).jumpPower;
}
if place_meeting(x,y+1,obj_solid)
vspeed=-jumpHeight;
//WALLJUMP
if !place_meeting(x,y+1,obj_solid)
{
if place_meeting(x-1,y,obj_solid)
{
vspeed=-jumpHeight;
spd=wJspd;
}
if place_meeting(x+1,y,obj_solid)
{
vspeed=-jumpHeight;
spd=-wJspd;
}
}
}
// Gravità
if place_meeting(x,y+1,obj_solid)
gravity=0;
else
{
if ( WallSlowed )
{
gravity=0;
vspeed=0;
y+=WallSpeed;
}
else
gravity=grav;
}