Journal 144 — Unity Project Development, 2.5D Shooter

Objective: To add a mid-level and final boss

In the previous articles, I have the basic UI working, along with weapons, power ups, and the ability to restart. In this article, I’m going to add a mid-level boss and a final boss.

Ultimately, I plan to have 5 or 6 normal waves, then a mid-level boss, then another few waves, and the final boss.

I’ll take a larger size helicopter game object as my mid-level boss, and I’ll use a B2 stealth bomber as my final boss. I’ll give them some animations and give them a couple sets of weapons, both missiles and bullets. I’ll also experiment with a new set of waypoints and try to come with random patterns for weapons to fire, and also it will take several hits to show damage and destroy them.


For the helicopter mid-level boss, I added a couple empty game objects for gun and missile prefabs. I also used a mesh collider and Rigidbody.

I reused the previously created script for the gun location to spawn projectiles, and then I added a new script dedicated to the missile location for the missile projectiles. This was to simplify the code to call the fire function instead of trying to call the same script on two child objects. Eventually I’ll look at optimizing how this is handled, but for now it works.

I then set up a new set of waypoints for the mid-level boss to follow.

I made a new enemy sub-class to: follow a different set of waypoints, use two different weapons to instantiate, and have a different fire rate. Also, I wanted to record several hits before the enemy is destroyed, and give a different number of points when destroyed.

In the GameManager, I needed another Waypoints getter-setter to find and add a separate set of waypoints to the mid-level boss when instantiated.

Earlier, when setting up the player and enemy and their weapons, I was running into collider issues where the enemy would fire and take damage from its own prefab. I fixed this by setting up different layers for the player and player weapons, and enemy and enemy weapons so they ignore each other in the Project Settings.

Now, let’s see this in action.

Final Boss

For the final boss, I set up similar to the mid-level boss with the same components and two weapon spawn locations.

I made a different set of waypoints than the other enemies.

For the weapon spawn, I decided to use the triple shot spread in both spots, which is more difficult to avoid. One issue that came up in doing this is I needed to set the 3 child prefabs in the triple shot to the enemy layer. I used a function MoveToLayer to handle this.

I made a new final boss script that uses the Enemy base class.

In the Game Manager, I made a new getter-setter to assign the final boss waypoints.

Finally, let’s see this in action.

Thank you for your time!

Next, I plan to set up the menu screen and add some background music and sound effects.




An Engineering Manager consultant who is seeking additional skills using Unity 3D for game and application development.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

As a Programmer, When Do You Level up from Junior to Senior Programmer?

Four different scripts to send email 📬using AWS-SES(Simple Email Service) — Part 1😎

Tip: Use Logging Levels Consistently

Xwap protocol is aVery good project with specific goals, a good product and a great team that will…

Arweave — Decentralized Storage for Interoperable Game Assets

Barbed Wire Builder in Unity — Dev Log

Complete Guide to Terraform: News, Updates, Tips

Contributing to Open Source Phase at Encora Apprenticeship — Week 4

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
Chris Nielsen

Chris Nielsen

An Engineering Manager consultant who is seeking additional skills using Unity 3D for game and application development.

More from Medium

Journal 135 — Unity App Development, Interactive Map Info Cards with Scriptable Objects

A Series On Creating Immersive Audio in Unity with Custom Wwise Scripts

Gamedev Log: “The Escape” #1 (Unity/C#)

Unity Animation Event Explained