platform | invert gravity | gml
objPlayer Step
// ... using an inverted pickup object that
// is used once only, and destroys itself:
var i = instance_place(x,y,objInvertedPickup);
if (i != noone) {
instance_destroy(i);
grav = grav * -1;
image_yscale = image_yscale * -1;
}
// ... could use any location or point of contact,
// such as an objInverted platform block on
// both top and bottom sides of inversion:
if place_meeting(x,y+1,objInverted) or
place_meeting(x,y-1,objInverted)
{
grav = grav * -1;
image_yscale = image_yscale * -1;
}
// to enable jumping when upside down:
if(grav > 0){
if (place_meeting(x, y+1, objBlock))
and (keyboard_check(vk_up))
{
vert = jump_speed;
}
}
if(grav < 0){
if (place_meeting(x, y-1, objBlock))
and (keyboard_check(vk_up))
{
vert = -jump_speed;
}
}
