Sign in

After implementing our Object Pooler, we’re now going to put together the enemy’s shooting pattern.

The Fan

To make this pattern, we’ll cover a bit of math. If we look closely at the pattern’s origin point, we can see it starts as a small semi-circle. …

The next feature for our game is a boss battle. Part of the boss battle will include a bullet hell situation where players will dodge a swarm of bullets. To implement the bullet behavior, we will utilize a design pattern known as object pooling.

What is Object Pooling

Object Pooling is the idea of…

We’re taking a quick break from the Space Shooter series.

One blocker in development is finding the right assets for your game. In this article, I’ll give some tips for where to go to find free assets that can help you fill some of the aesthetic gaps in your games.


To counteract the Destroy Powerups feature that we made in the last article, we’ll give the player a Magnet Pickup ability to collect powerups using the ‘C’ key.

Magnet Pickup

After players press the ‘C’ key, if there are powerups in a given radius of the player, the powerups will begin to…

Continuing our theme of adding more behaviors to our enemies, we’ll give our enemies the ability to shoot and destroy power-up collectibles if they are within a given range.

Destroying Powerups

To make our enemies capable of destroying powerups, we need the enemy to detect the powerup and then sequentially shoot lasers…

Continuing to diversify our enemy behavior, in this article, we’ll build an enemy that can shoot lasers behind itself.

A Smarter Enemy

A smart enemy doesn’t shoot lasers haphazardly. A smart enemy will shoot lasers backward only when the player enters its line of sight. …

In the next upcoming articles, we’ll focus on adding diversity to our pool of enemies to create more exciting gameplay.

Aggressive Enemy

The aggressive enemy that we will make will detect when the player is within a certain range. …

Previously, I broadly explained how to build a 2D Space Shooter Wave Manager with Unity Events. In this article, I’ll cover some of the specific information the Wave Manager needs to do its job.

WaveInfo Class

The Wave Manager needs information about each enemy wave. Each wave needs to track the current…

In this article, we’ll cover how to use Unity Events to control the ordering of enemy waves from the Inspector.

Unity Events

The idea of a Unity Event is to signal when a certain method/behavior should be performed. A basic implementation example can be found here:

What we’re interested in is…

In my 2D Space Shooter, I want to create multiple enemy types. Enemies will have different behavior, but they’ll interact with the player similarly. To do this, we’ll change our code so that we have smaller enemy scripts that pull or from a base enemy script.


Ted Lim

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store