How to create Sprites and import Sprite Sheets in Unreal Engine

While Unreal Engine is primarily known for its amazing and realistic 3D games, it’s also used in 2D or 2.5D games! In this tutorial, I’ll teach you how to import sprites and sprite sheets into Unreal Engine.

It may surprise you to learn that Unreal Engine is also used for 2D games, such as Octopath Traveler, Triangle Strategy, Backbone, Unbound: Worlds Apart, Born of Bread, and many others.

So, if you’ve heard that using Unreal Engine for 2D games is too much, just ignore it. Especially if you’re planning to combine 2D with 3D elements in your game.

Let’s start importing our sprites into our Unreal Engine Project!

How to import Sprites in Unreal Engine

The first thing you need is .png images, so you can have a transparent background.

For this tutorial, we will ignore .JSON files and import only .PNG.

I am going to use these zombie sprites from GameArt2D (Click on the link to download them if you want).

These sprites have a CC0 License.

Extract the zip file, and you will see a folder with .png images.

To complete this step, simply import all the .png images into a folder within your Unreal Engine project.

You can either drag & drop them or use the import button in the Content Drawer.

The images you have imported will have a black background in the thumbnail. To make them transparent, select all the images in the folder, right-click, and choose: ‘Sprite Actions’ -> ‘Apply Paper 2D Texture Settings’.

Apply Paper 2D Texture Settings in UE5

However, we can’t use texture files for our 2D game because Unreal Engine requires Sprite files.

So, once again, right-click all the imported images and select: ‘Sprite Actions’ -> ‘Create Sprite’.

Now, you should have sprite files and texture files inside the folder.

What if I have a Sprite Sheet?

To show you this example, I used a tool called Free Sprite Sheet Packer to make a Sprite Sheet, but you don’t have to do that.

If you only have one Sprite Sheet image, import it into your Unreal Engine project, right-click, and select ‘Sprite Actions’ -> ‘Extract Sprites’.

In the new window, change the ‘Sprite Extract Mode‘ to ‘Grid.’ Then, set your ‘Cell Width’ and ‘Cell Height.’

In my case, ‘Cell Width’ is set to 523, and ‘Cell Height’ is 578.

An easy way to get these numbers is to divide the total width and height by the number of sprites you have. For example, 2092 width divided by 4 sprites is 523, and 1734 height divided by 3 sprites is 578.

To finish, click on the ‘Extract…‘ button.

The sprite files will be extracted. In this case, it will also export the two empty sprites, so you can just delete them.

Unreal Engine Extract Sprites

How to create Flipbook Animations?

So in both cases, even if you had multiple .png images, or a single .png Sprite Sheet, now you should have inside your Unreal Engine project the Sprite files you will use for your animation.

The next step is to create a Flipbook animation using the sprites we created. If you’ve never done this before, think of it like a .gif animation that will play inside Unreal Engine using the sprites you select.

To create a Flipbook, select all the Sprites that are part of the animation, for example the idle animation, then right click and select ‘Create Flipbook‘.

If you have done everything correctly, when you hover your mouse over the flipbook file or open it, you will see the animation playing.

Unreal Engine Create Flipbook

Keep in mind that this method does not work for bone animations. I’ll cover this case in a future tutorial.

How do I change the Animation Play Rate?

To change the speed that the animation plays, just open the Paper Flipbook file and change the ‘Frames Per Second‘ parameter.

A higher value will play faster, and a lower value will play slower.

Flipbook Frames Per Second

How do I use Paper2D Assets in Unreal Engine?

Now, you can simply drag & drop all Sprite and Flipbook assets you created into your Unreal Engine level.

If you want to create a purely 2D game, keep the assets with a value of 0 on the Y-axis. Alternatively, if you want to combine 2D assets in a 3D world, use different Y values.

It’s time to experiment and have fun!

Unreal Engine Sprite Paper2D

How do I make my sprites smaller?

If you’ve imported the sprites, and they are either too small or too big for the level, you have three options here, depending on how many sprites you want to change.

  1. Simply double-click to open the Sprite and change the ‘Pixels per unit‘ value.
  2. You can also use ‘Bulk Edit Selection in Property Matrix‘ to change all selected sprites at once.
  3. Alternatively, adjust the default import value in the Project Settings. Just enter ‘Pixel Unit’ in the search bar and modify the ‘Default Pixels Per Unreal Unit‘ value.

Can the lights affect my sprites in Unreal Engine?

Of course!

To have lights in your level affect your sprite, you just need to change the material of your sprite.

To do this, enter the sprite and change the ‘Default Material‘ to any that contains ‘LitSpriteMaterial‘.

If you don’t want the light to affect the sprite, look for ‘UnlitSpriteMaterial‘.

Experiment with Masked, Opaque, and Translucent sprite materials to find out which one works best for your game.

For more advanced light effects and depth, I recommend creating normal maps for the sprite as well.

Unreal Engine Sprite Lit Material

What if I make changes, can I reimport sprites?

Yes! Just right click on the texture file you want to change, and select ‘Reimport’.

reimport assets unreal engine

How do I make sprites move in the level?

If you want to move the sprite like a character, you’ll need to learn Blueprints or C++ programming. If you’re new to Unreal Engine, read our UE5 Roadmap first.

To explain briefly, you’ll need to create a new Blueprint of the ‘PaperCharacter‘ Class.

If you use the PaperZD Plugin, you’ll need to use the ‘PaperZDCharacter’ Actor Class.

Then, create the input actions, set them in the input mapping context, and call the input events in the character’s blueprint to move its position in the world.

I hope this helps. Since this is a more advanced topic, I’ll cover it in a future tutorial.