I Wanna Community

Fangames => Game Design => Programming Questions => Topic started by: BoshyMan741 on August 06, 2015, 12:45:13 PM

Title: Screen shake motion blur
Post by: BoshyMan741 on August 06, 2015, 12:45:13 PM
Does anyone know how to make a screen shake that also does motion blur, kinda like in Boshy?
Title: Re: Screen shake motion blur
Post by: Katz on August 06, 2015, 01:05:57 PM
Hope this helps with the motion blur (https://gmc.yoyogames.com/index.php?showtopic=180100)
Title: Re: Screen shake motion blur
Post by: lawatson on August 06, 2015, 02:35:43 PM
There's some fancy stuff you can do with drawing the screen to a surface and then drawing the surface in random spots with a low alpha, but what Katz linked might work better for what you want.
Title: Re: Screen shake motion blur
Post by: BoshyMan741 on August 06, 2015, 03:01:48 PM
Yeah I actually used what Katz linked right before coming here to ask. Also do you know if you could explain how to what you said. I'm a pretty big n00b with the draw event.
Title: Re: Screen shake motion blur
Post by: lawatson on August 06, 2015, 05:52:51 PM
Well, you'd have to learn how surfaces work, which is actually pretty complicated. I made a topic about it in the forums at some point, so maybe you can learn from that.
Title: Re: Screen shake motion blur
Post by: Kyir on August 06, 2015, 09:16:04 PM
As for screen shake, you basically just want to adjust the view_angle (be sure to enable views in whatever screen you're doing this in). You can fiddle with the other stuff in https://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/views/index.html but the angle is the easiest I've found.
Title: Re: Screen shake motion blur
Post by: Katz on August 06, 2015, 11:26:18 PM
As for screen shake, you basically just want to adjust the view_angle (be sure to enable views in whatever screen you're doing this in). You can fiddle with the other stuff in https://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/views/index.html but the angle is the easiest I've found.

Have an old script that does just that.

Quote from: screenShake
///screenShake(time,shakeX,shakeY)
//
//  shakes the screen for an amount of time
//
//      time        the time to shake
//      shakeX      the maximum shaking intensity in x axis(pixel)
//      shakeY      the maximum shaking intensity in y axis(pixel)
//

{
    var inst;
    inst = instance_create(view_xview[0],view_yview[0],objScreenShake);
    inst.alarm[0] = argument0;
    inst.shakeX = argument1;
    inst.shakeY = argument2;
}

and it creates an object that actually shakes the view.

objScreenShake:

Quote from: Create Event:
{
    //get the x,y value of current view
    xview=view_xview[0];
    yview=view_yview[0];
}

Quote from: Alarm 0:
{
    //restoring original views
    view_xview[0]=xview;
    view_yview[0]=yview;
    instance_destroy();
}

Quote from: Step Event:
{
    //shaking views
    view_xview[0]=xview+random_range(-shakeX,shakeX);
    view_yview[0]=yview+random_range(-shakeY,shakeY);
}

Basically you sohuldn't be using this more than once at a time; Otherwise the view in the actual room will be restored to an angle that be off from the actual window.