G
Go-a-og
Guest
I've got a simple code block for a rock object that changes its shape and angle depending on its nearest neighbor, is there a better way to do this without this horrific looking code? Like so.
Code:
//four sides
image_speed = 0
if !place_meeting(x-32,y,obj_rock)
&&!place_meeting(x,y-32,obj_rock)
&&!place_meeting(x,y+32,obj_rock)
&&!place_meeting(x+32,y,obj_rock)
{
image_index = 0
image_angle =0
}else
//three sides
if !place_meeting(x-32,y,obj_rock)
&&!place_meeting(x,y-32,obj_rock)
&&!place_meeting(x,y+32,obj_rock)
{
image_index = 1
image_angle = 0
}else
if !place_meeting(x+32,y,obj_rock)
&&!place_meeting(x,y-32,obj_rock)
&&!place_meeting(x,y+32,obj_rock)
{
image_index = 1
image_angle = 180
}else
if !place_meeting(x-32,y,obj_rock)
&&!place_meeting(x,y-32,obj_rock)
&&!place_meeting(x+32,y,obj_rock)
{
image_index = 1
image_angle = 270
}else
if !place_meeting(x-32,y,obj_rock)
&&!place_meeting(x,y+32,obj_rock)
&&!place_meeting(x+32,y,obj_rock)
{
image_index = 1
image_angle = 90
}else
//two sides
if !place_meeting(x-32,y,obj_rock)
&&!place_meeting(x,y-32,obj_rock)
{
image_index = 3
image_angle = 270
}else
if !place_meeting(x+32,y,obj_rock)
&&!place_meeting(x,y-32,obj_rock)
{
image_index = 3
image_angle = 180
}else
if !place_meeting(x-32,y,obj_rock
)&&!place_meeting(x,y+32,obj_rock)
{
image_index = 3
}else
if !place_meeting(x+32,y,obj_rock)
&&!place_meeting(x,y+32,obj_rock)
{
image_index = 3
image_angle = 90
}else
//one side
if !place_meeting(x+32,y,obj_rock) {image_index = 2 image_angle = 90}else
if !place_meeting(x-32,y,obj_rock) {image_index = 2 image_angle = 270}else
if !place_meeting(x,y-32,obj_rock) {image_index = 2 image_angle = 180}else
if !place_meeting(x,y+32,obj_rock) {image_index = 2 image_angle = 0}else
{image_index = 4}
Last edited by a moderator: