Make a Sprite flash

       

You achieve a flashing effect by drawing a colored solid over your sprite while using additive blending (blendmode_enum 2). The background behind the sprite must be transparent though when you render the white rectangle on top - so you need to render it first on a separate render target otherwise the rectangle would also blend with your stage etc.

def white_sprite(outputs, sprite, render_target_name)
  # Prepare render target in sprite size
  render_target = outputs[render_target_name]
  render_target.width = sprite[:w]
  render_target.height = sprite[:h]

  # Render sprite at bottom left of render target
  render_target.primitives << sprite.merge(x: 0, y: 0)
  # Additive overlay with white rectangle to create a white sprite
  render_target.primitives << sprite.to_solid(x: 0, y: 0, r: 255, g: 255, b: 255, blendmode_enum: 2)

  # Return render target as sprite
  { x: sprite[:x], y: sprite[:y], w: sprite[:w], h: sprite[:h], path: render_target_name }.sprite!
end

sprite = { x: player.position.x, y: player.position.y, w: 16:, h: 24, path: 'player.png' }.sprite!
args.outputs.primitives << white_sprite(args.outputs, sprite, :flashing_player)