y_spd += global.g * global.time_scale;

if place_meeting(x, y + y_spd, oParentSolid)
{
    while !place_meeting(x, y + sign(y_spd), oParentSolid) //BUG HERE!!
        y += sign(y_spd);
    
    if y_spd > 2
	{
        y_spd *= -restitution;
		x_spd *= restitution;
	} // 落地反弹
	else
	{
        y_spd = 0;
		x_spd = 0;
	}
}
y += y_spd * global.time_scale;

if place_meeting(x + x_spd, y, oParentSolid)
    x_spd *= -restitution; // 撞墙反弹

x += x_spd * global.time_scale;

pickup_timer--;

image_angle += 4 * point_distance(0, 0, x_spd, y_spd) * global.time_scale;


if flash_timer > flash_duration
{
	oUI.credit_pickup_timer = 120;
	oUI.credit_pickup++;
	global.save_data.player.Credit++;
	instance_destroy();
}