Moving an Enemy randomly

Well, my game is a 2D game, the concept is when the enemies touches the player the game is over. But my problem is I can’t make the enemies move on their own at random and when they hit the wall they bounces off to another direction. i’m still new to unity and coding I would greatly appreciate it if any of you could help me out

I think the basic idea would be to calculate a random direction, move the enemy a certain amount of time in this direction and after that time, recalculate the random direction. You can have a more complex movement pattern, but this should suffice for the start.

So, if a certain time is over or if the enemy hit the wall, change the random movement direction. Apply the direction in in relation to the passed time since the last frame. I haven’t coded 2D games with unity myself and I haven’t tested the code, but this should give you a basic idea:

private float latestDirectionChangeTime;
private readonly float directionChangeTime = 3f;
private float characterVelocity = 2f;
private Vector2 movementDirection;
private Vector2 movementPerSecond;

void Start(){
	latestDirectionChangeTime = 0f;

void calcuateNewMovementVector(){
   //create a random direction vector with the magnitude of 1, later multiply it with the velocity of the enemy
    movementDirection = new Vector2(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)).normalized;
	movementPerSecond = movementDirection * characterVelocity;

void Update(){
	//if the changeTime was reached, calculate a new movement vector
	if (Time.time - latestDirectionChangeTime > directionChangeTime){
		latestDirectionChangeTime = Time.time;
	//move enemy: 
	transform.position = new Vector2(transform.position.x + (movementPerSecond.x * Time.deltaTime), 
	transform.position.y + (movementPerSecond.y * Time.deltaTime));


In OnCollisionEnter2D or whatever collision function you are using, you can then check, if the enemy hit a wall, if so, calculate a new movement direction.
You could check for the wall by assigning a tag to the wall objects and compare the tags. If the gameObject of your collider has the tag “wall” you can then call the calcuateNewMovementVector() function again.

@HyPnOj64 I think u should add screen boundaries, because this script will make ur object move out of the screen