Z
zakthdrgnslyer
Guest
My collisions script is really messy, is there way I can make this cleaner? (don't mind the object[]'s, it's just nicknames for my objects)
GML:
//////////////
//COLLISIONS//
//////////////
//horizontal
if (place_meeting(x+hsp,y,object[1]))
{
while(!place_meeting(x+sign(hsp),y,object[1]))
x+= sign(hsp);
hsp=0;
obj_player.state="hurt"
obj_enemy.state="attack"
}
//vertical
if (place_meeting(x,y+vsp,object[1]))
{
while(!place_meeting(x,y+sign(vsp),object[1]))
y+= sign(vsp);
vsp=0;
obj_player.state = "hurt"
obj_enemy.state = "attack"
}
//horizontal
if (place_meeting(x+hsp,y,object[2]))
{
while(!place_meeting(x+sign(hsp),y,object[2]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[2]))
{
while(!place_meeting(x,y+sign(vsp),object[2]))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,object[4]))
{
while(!place_meeting(x+sign(hsp),y,object[4]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[4]))
{
while(!place_meeting(x,y+sign(vsp),object[4]))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,object[8]))
{
while(!place_meeting(x+sign(hsp),y,object[8]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[8]))
{
while(!place_meeting(x,y+sign(vsp),object[8]))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,object[9]))
{
while(!place_meeting(x+sign(hsp),y,object[9]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[9]))
{
while(!place_meeting(x,y+sign(vsp),object[9]))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,object[12]))
{
while(!place_meeting(x+sign(hsp),y,object[12]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[12]))
{
while(!place_meeting(x,y+sign(vsp),object[12]))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,object[13]))
{
while(!place_meeting(x+sign(hsp),y,object[13]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[13]))
{
while(!place_meeting(x,y+sign(vsp),object[13]))
y+= sign(vsp);
vsp=0;
}
/*
//horizontal
if (place_meeting(x+hsp,y,object[15]))
{
while(!place_meeting(x+sign(hsp),y,object[15]))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,object[15]))
{
while(!place_meeting(x,y+sign(vsp),object[15]))
y+= sign(vsp);
vsp=0;
}
*/
//horizontal
if (place_meeting(x+hsp,y,obj_stump))
{
while(!place_meeting(x+sign(hsp),y,obj_stump))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,obj_stump))
{
while(!place_meeting(x,y+sign(vsp),obj_stump))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,obj_fence_h))
{
while(!place_meeting(x+sign(hsp),y,obj_fence_h))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,obj_fence_h))
{
while(!place_meeting(x,y+sign(vsp),obj_fence_h))
y+= sign(vsp);
vsp=0;
}
//horizontal
if (place_meeting(x+hsp,y,obj_fence_v))
{
while(!place_meeting(x+sign(hsp),y,obj_fence_v))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,obj_fence_v))
{
while(!place_meeting(x,y+sign(vsp),obj_fence_v))
y+= sign(vsp);
vsp=0;
}
if obj_player.state != "driving"{
if (place_meeting(x+hsp,y,obj_car))
{
while(!place_meeting(x+sign(hsp),y,obj_car))
x+= sign(hsp);
hsp=0;
}
//vertical
if (place_meeting(x,y +vsp,obj_car))
{
while(!place_meeting(x,y+sign(vsp),obj_car))
y+= sign(vsp);
vsp=0;
}
}