Object Not moving away from player.

Ok.Topdown game. So when a enemy get to close to my player I want it to retreat . My code is as follow but all it does it move down the screen no matter from which direction the player approaches the enemy.

 function Retreat(){
  if (retreat){
  var TempRetreat : boolean= true;
  var numbers = [1, 2];
  var pick = numbers[Random.Range(0, numbers.Length)];
 if (TempRetreat){
  var retposition : Vector3= transform.position - player.transform.position;
  retposition = retposition.normalized;
  var retpositionFinal = -1 * retposition;
  transform.LookAt(retpositionFinal);
  transform.parent.position = Vector3.MoveTowards(transform.position, retpositionFinal, speed * Time.deltaTime);
  if (transform.parent.position ==retpositionFinal){
  retreat=false;
  }
  }
  }
 }

i think it’s because of the formula. E.g. If the enemy is pos y=2 & player is y=4 then enemy pos is 2-4= -2, if the enemy pos y=4 & player is y=2 then enemy pos is 4-2 =2, so it is direction is always moving down.

Thank for the answer. Think I am looking at this wrong. Just want the enemy to run away from the player when getting to close.

1 Like

That makes way more sense than what I am trying. Thank You!