Sunday, 11 April 2021

【GAMEMAKER】 Enemy Path Finding

 Information about object: obj_player

Sprite: spr_idle_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

///set up
enum player_state {
    idle,
    up,
    down,
    left,
    right
    }

dir=player_state.down;
is_moving=false;
image_speed=0.5;

Step Event:
execute code:

///keypress code
if (keyboard_check(vk_left))
{
    dir=player_state.left;
    is_moving=true;
}
else
if (keyboard_check(vk_right))
{
    dir=player_state.right;
    is_moving=true;
}
else
if (keyboard_check(vk_up))
{
    dir=player_state.up;
    is_moving=true;
}
else
if (keyboard_check(vk_down))
{
    dir=player_state.down;
    is_moving=true;
}
else
{
    is_moving=false;
}

execute code:

///movement
if is_moving
{
    switch (dir)
    {
        case player_state.up:
        if !position_meeting(x,y-4,obj_solid_base) y -= 4;
        break;

        case player_state.down:
        if !position_meeting(x,y+4,obj_solid_base) y += 4;
        break;

        case player_state.left:
        if !position_meeting(x-4,y,obj_solid_base) x -= 4;
        break;
   
        case player_state.right:
        if !position_meeting(x+4,y,obj_solid_base) x += 4;
        break;
    }
}
depth=-y;
execute code:

///animation
if is_moving
{
    switch (dir)
    {
        case player_state.up:
        sprite_index=spr_walk_up;
        break;

        case player_state.down:
        sprite_index=spr_walk_down;
        break;

        case player_state.left:
        sprite_index=spr_walk_left;
        break;
   
        case player_state.right:
        sprite_index=spr_walk_right;
        break;
    }
}
else
{
    switch (dir)
    {
        case player_state.up:
        sprite_index=spr_idle_up;
        break;

        case player_state.down:
        sprite_index=spr_idle_down;
        break;

        case player_state.left:
        sprite_index=spr_idle_left;
        break;
   
        case player_state.right:
        sprite_index=spr_idle_right;
        break;
    }
}

Information about object: obj_cactus
Sprite: spr_cactus
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_elements_parent
Children:
Mask:
No Physics Object
Information about object: obj_flag
Sprite: spr_flag
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_elements_parent
Children:
Mask:
No Physics Object

Information about object: obj_mushroom
Sprite: spr_mushroom
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_elements_parent
Children:
Mask:
No Physics Object

Information about object: obj_elements_parent
Sprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children
obj_cactus
obj_flag
obj_mushroom
Mask:
No Physics Object
Create Event:
execute code:

instance_create(x,y,obj_solid_base);
depth=-y;

Information about object: obj_solid_base
Sprite: spr_solid_base
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object

Information about object: obj_enemy
Sprite: spr_pirate
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

///Create Grid
size = 16;
grid = mp_grid_create(0,0,ceil(room_width/size),ceil(room_height/size),size,size);

///Add walls to grid
mp_grid_add_instances(grid,obj_solid_base,1);

//create initial path
path=path_add();

mp_grid_path(grid,path,x,y,obj_player.x,obj_player.y,1);
path_start(path,2,path_action_stop,true);
Step Event:
execute code:

///reset path at end
if path_position>=0.5
{
    path_clear_points(path);
    mp_grid_path(grid,path,x,y,obj_player.x,obj_player.y,1);
    path_start(path,2,path_action_stop,true);
}
execute code:

///face direction moving
if direction>90 and direction<270
{
    image_xscale=-1;
}
else
{
    image_xscale=1;
}
Draw Event:
execute code:

///For Drawing Grid
draw_path(path,x,y,true);
draw_self();

No comments:

Post a Comment

BREAKING: North Carolina automotive group acquires 7 Upstate dealerships

Breaking news from GSA Business Report Click here to view this message in a browser window. ...