How to get an enemy to go to a location and then return.,Hi,

I’m creating a 2D top-down game and I want a certain type of enemy to come out of a hole to attack the player and then return when they miss the player. (The enemies are one shot killers.) I have a basic idea for what I want to happen, but I don’t know how to code it. I want the enemy to come out of hiding when the player reaches a certain area around it, head in the player’s direction, and then smoothly return to it’s hiding spot. I can’t find anything for coding this type of behavior.,

Hey Silentranger00,

The most fun I get from working with Unity is thinking out code and getting it to work.

Sounds like a lot of distance checks.

1, to wait for the player to get close before initiating the movement towards the player.

2, movement towards the player, with a distance check for when they get close to initiate the attack.

3 a check to see if the attack went off, then a return movement call back to its initial starting position.

For how you’d write it, I’m not an expert by any means but I’ve dabbled now for about a years time.

You’re going to need…

A starting Position for the enemy (vector3)
A Player Transform reference
A distance float (to start the attack)
a attackdistance float (to tell when the attack goes off by proximity)
An “moveattack” bool
Some sort of home position reference.

Basically as follows.
on start, startingposition=transform.position;

during update or however you’d like.
if(moveattack==true)
{
if(player.transform-transform.position).sqmagnitude5)
Destroy(player)

moveattack=false;

}
if(moveattack==false)
transform.position= Mathf.Lerp(transform.position,startingposition.position,.1f*Time.deltaTime);

I wish you the best, and I didn’t know much before I started… I’d strongly suggest watching a few youtubes, reading the manual on spots specific to what you’re working on, and by all means research similar things online specific to the part you’re working on. I have my own questions, but, I often times find its much more rewarding to write the code myself and struggle with it, as I’m extremely happy when things turn out to work the way I envisioned…

Now that said… I’m definitely no expert. My above idea for how to fix your problem is only a suggestion and is likely NOT the most efficient way to do so. Best of luck!