Saturday, 10 April 2021

【GAMEMAKER】Allowing a Player to Get In or Out of the Drivable Vehicle

 Information about object: obj_boat

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

///Set Variables
max_speed=4;
m_Mass = 100;
direction=0;

Step Event:
execute code:

///movement code
if instance_exists(obj_player)
{
    speed=0;
    exit; //prevent move if player present 
}

if keyboard_check(ord('A'))
{
   direction+=10;
}
if keyboard_check(ord('D'))
{
   direction-=10;
}
direction=direction mod 360;
if keyboard_check(ord('W'))
{
   speed+=0.5;
}
if speed>max_speed speed=max_speed;
//friction  
speed-=0.2;
if speed<0 speed=0;


execute code:

///sprite control
//Main Sprite Control
image_angle=direction;

execute code:

///Get Out of boat
if instance_exists(obj_player) exit;//Prevent creation if player already present
if keyboard_check_pressed(ord('Z')) 
{
    instance_create(x,y+32,obj_player);
    global.active="Walking";
}
Collision Event with object obj_player:
execute code:

///Get in boat
if instance_exists(obj_player) && keyboard_check_pressed(ord('X'))//Check Key Press && Player Present
{
    with (obj_player) instance_destroy();//Destroy Player
    global.active="Boat";
}
Collision Event with object obj_solid_base:
execute code:

scr_CollisionMoveAwaySelf(1);

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_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_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_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_hud
Sprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

global.active="Walking";
Draw GUI Event:
execute code:

draw_set_font(font_data);
draw_set_halign(fa_center);
draw_set_valign(fa_middle);
draw_set_colour(c_black);
draw_text(640,600,"Active "+global.active+"#Arrow Keys Move Player#WSAD Move Boat#X To Get In Boat#Z To Get Out of Boat");

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

///set up element
element=instance_create(x,y,obj_solid_base);
element.depth=-y;
//set mass and bouncy
element.m_Mass = 1000;

Information about object: obj_solid_base
Sprite: spr_solid_base
Solid: false
Visible: false
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. ...