Tuesday, 6 April 2021

【GAMEMAKER】Destructable Terrain

 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;
pick=10;
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;
    }
}



execute code:

///damage block && control
if keyboard_check_pressed(ord('D')) && pick>0
{
    
    //check for block right
    if dir==player_state.right&& position_meeting(x+34,y-16,obj_block)//see if a block is there
    {
            block=instance_position(x+34,y-16,obj_block);//get the id of the block
            block.damage+=1;//damage the block
            pick--;
    }
    
    //check for block left
    if dir==player_state.left && position_meeting(x-34,y-16,obj_block)//see if a block is there
    {
            block=instance_position(x-34,y-16,obj_block);//get the id of the block
            block.damage+=1;//damage the block
            pick--;
    }
    
    //check for block down
    if dir==player_state.down &&  position_meeting(x,y+16,obj_block)//see if a block is there
    {
            block=instance_position(x,y+16,obj_block);//get the id of the block
            block.damage+=1;//damage the block
            pick--;
    }
    
    //check for block up
    if dir==player_state.up && position_meeting(x,y-34,obj_block)//see if a block is there
    {
            block=instance_position(x,y-34,obj_block);//get the id of the block
            block.damage+=1;//damage the block
            pick--;
    }
}


Collision Event with object obj_crate:
execute code:

pick+=10;
with (other) instance_destroy();
Draw GUI Event:
execute code:

draw_text(50,50,"Press D When Facing Block");
draw_text(350,50,"Current Picks"+string(pick));
draw_sprite(spr_pick_hud,0,550,50);

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
obj_block
Mask:
No Physics Object

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

damage=0;
image_speed=0;
image_index=damage;
Step Event:
execute code:


if damage==6
{
    if irandom(3)==1 instance_create(x,y,obj_treasure);
    instance_destroy();
}
image_index=damage;

Information about object: obj_treasure
Sprite: spr_treasure
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object

Information about object: obj_crate
Sprite: spr_crate
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object

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. ...