I'm trying to make a simple AI but....

public float EnemySpeed;

    public Transform TargetPosition;

    void Start ()
    {
        TargetPosition = GameObject.FindGameObjectWithTag ("Player").transform;
    }

    void Update () {
      
    }

    void OnCollisionEnter2D(Collision other)
    {
  
        if (other.gameObject.tag=="Player")
        {
            transform.position = Vector2.MoveTowards (transform.position, TargetPosition, EnemySpeed * Time.deltaTime);      //error here
      
      
        }
  
  
  
  
  
  
    }



}


so its saying the error happens here:

Vector2.MoveTowards()

problem with argument #2:
Vector2.MoveTowards (transform.position, TargetPosition, EnemySpeed * Time.deltaTime);

documentation says arguments for this method are: (Vector2, Vector2, Float)

public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);

and since TargetPosition is Transform, you cannot use it as an Vector2 argument there

public Transform TargetPosition

so get the position from that transform:

Vector2.MoveTowards (transform.position, TargetPosition.position, EnemySpeed * Time.deltaTime);

could also rename TargetPosition into targetTransform, so its easier to remember what it is.

1 Like

Thx i resolve it