Let’s give the enemy a brain.

Ok, so we have our enemy AI moving in random directions and shields to help protect them. Now it’s time to give them a brain.

Let’s make it so a random enemy will have the will to kamikaze the player.

To do this I need to change the enemy movement code only slightly. I can leave the same movement code that I have orginally and just another function and case to the code.

This is placed inside the enemy script. First I’m going to be using the physics engine provided by Unity and MovePosition that will give the object momentum. To do this, you should always run this code inside of a FixedUpdate, not the normal update.

Ok, to break this down… I add a rigidbody variable named rb and then inside the Start function assign the rigidbody component to it. I also made a Vector2 variable _movement that will be used later.

I’m going to be giving these “special” fighters their own movement using the physics engine so I created a function called MoveEnemy. Inside of this it is just using the rigidbody and the Unity built in function named MovePosition to give the enemy movement. Note that I did slow the enemy by 1/2 to 2. I found that 4 was just way to fast and these are relentless and don’t give up trying to smash the player.

Once I have them moving down the screen I just made another case inside of the already built CalculateMovement function. So when this particular fighter is called it will use a Vector3 variable direction and assign it the player’s position minus the enemy position (this will move it towards the player). We are going to pass this direction into the _movement variable we created earlier which wilkl be given to the MoveEnemy function. The Normalize part just gives it a value between 0 and 1.

Now, this took me a lot longer than the explanation above. A lot of research in fact, videos and reddit posts to put this together. Again, don’t be afraid to go on the hunt for code. You aren’t going to remember it all and there is so much on the internet that will help you!

Let’s see how these kamikaze enemies play. I just put this code into case 0, 2 and 2 as well so all of the enemies would be like this this way you can see how they work.

Again, a lot of different things you can do here. Speed them up and make them more rare or have a play with the code and have a random chance that they will “lose” the player and start moving another direction.

But for me, I like it this way!

Happy Clicking!




With Unity all can be accomplished!

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

Recommended from Medium

Grasshopper River Generator

An in-depth introduction to HTTP Caching: Cache-Control & Vary

Code Philosophy 101 — Introduction, Statement of Intent, and an Example

Sweta Ghose: Week of 18 Apr — 24 Apr

CoinEx Smart Chain | Amazing Rewards for CSC’s “EGG Hunting” Game

Drawing the planet in brushstrokes

How to Write a Cover Letter to Land Your First Dev Job

5 Best Mobile App Development Frameworks Businesses Need to Consider Using in 2019

Best Mobile App Development Frameworks 2019

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
Laine Dorchester

Laine Dorchester

With Unity all can be accomplished!

More from Medium

Manager Classes in Unity: A Simpler Way to Call variables(Game Dev Day 64)

Call vs Apply vs Bind

cxplot: the ggplot of JavaScript