2D Galaxy Shooter P2: Homing Missiles to the Rescue!

Today’s challenge was to implement a Homing projectile!

To implement this feature, I had to go through many trials and errors. I basically know how to instantiate projectiles that go up but to have them rotate towards an enemy? I am inexperienced with this.

The Objective

The challenge’s objective is to implement a new rare power-up that will enable the player to shoot homing projectiles. The first thing I did was to customize a current power-up image and make it it's own.

I did not know what to name the power-up, so I just came up with something so random! Why not call it “Eat This!” So the enemies can have a load of “eat this!” to your face, man! *chuckles* My humor is not great lol.

I imported the image into Unity and added the essential components that make up a power-up.

I also created a simple-looking missile sprite to represent the new projetile.

Meet “Eat This.” It's very intimidating.

What I Learned

To have the projectiles rotate towards the enemy is a concept I knew about but hardly practiced.

I learned about the Cross Product and how it takes two vectors for a result of a third. This, with the rigidbody angular velocity of the missile equal to the negative rotation amount and times the speed, results in the logic to rotate towards the enemy. We then grab the reference to the rigid body's velocity to equal to the missiles transform up times the speed.

//Distance between the enemy and the missile
Vector3 direction = (Vector2)enemyInstance.transform.position — _rigidBody.position;
//Reference the direction vector with a vector that will transform the missile upwards in the z axis. This will give us the third vector.
float rotateAmount = Vector3.Cross(direction.normalized, transform.up).z;
//Grab the missiles rigidbody component to access its angular velocity. We need to equal it to the third vector times the rotation speed of the missile.
_rigidBody.angularVelocity = -rotateAmount * _rotateSpeed; //

Thanks to Brackey’s for this one. It’s a simplified version of the first attempts I had going at first on my own.

I also had to implement the logic for the homing missile to search for the closest enemy. I grabbed a reference to all enemy game objects active on the scene by using the enemy tag. I then grabbed their transform component and figure out which enemy is closest to the missile projectile. And that is all.

We now have homing missiles!

I learned a lot from this challenge. It was fun with lots of hair pulled out! lol.

That is all for today's challenge! Thank you for your time!




Hello everyone, My name is Gabriel Perez, I am a Unity Developer and a creator who is always learning and experimenting.

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

Recommended from Medium

Secure serverless file upload and download on AWS with various Access Control Lists

IoT News — Semtech Unveils LoRa® Corecell Reference Design for Full Duplex Gateway Applications

So You Need To Involve Manual Testers In Cucumber Automation?

Observability on K8s — DataDog Autodiscovery and DogStatsD

CDAC C-CAT Preparation Guide


Moving Platforms in Unity

Numpy Essential — Part 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
Gabriel Perez

Gabriel Perez

Hello everyone, My name is Gabriel Perez, I am a Unity Developer and a creator who is always learning and experimenting.

More from Medium

Cinemachine: How to create Camera Shake on Unity Cameras

WGTU #9: Diegetic VS non-diegetic learning— with World of Warcraft

How to Win the Race Using Director

Getting that Hand-Held Look on Cameras + Two Cinematic Challenges