Make a game object face another game object when instantiated

I am making a 2D asteroids game and I am trying to add an alien ship that shoots at the player (which is called ‘ship’) once every 2 seconds. I can get the alien ship to drop the bullet every 2 seconds, but can not get the bullet to move towards the ship. The bullet is a prefab. Can someone please explain how I would get the bullet prefab to move toward the ships position when instantiated?

This is the script to make the alien ship shoot the bullet:

using UnityEngine;
using System.Collections;

public class AlienShootScript : MonoBehaviour 
{
	public GameObject AlienBulletPrefab;
	public Transform Ship;

	void Start () 
	{
		StartCoroutine (onCoroutine()); 
	}

	IEnumerator onCoroutine()
	{
		while(true) 
		{ 
			Instantiate (AlienBulletPrefab, transform.position, transform.LookAt (Ship.transform.position));
			yield return new WaitForSeconds(2f);
		}
	}
	
	void Update () 
	{
	
	}
}

and here is the script for the bullet prefab that is supposed to shoot at the player:

using UnityEngine;
using System.Collections;

public class AlienBulletScript : MonoBehaviour 
{
	public float Thrust;
	public Rigidbody2D rb;
	public GameObject Ship;

	void Start () 
	{
		rb = GetComponent<Rigidbody2D> ();
	}
	
	void Update () 
	{
		rb.AddRelativeForce (Vector3.up * Thrust);
	}
}

Thrust is set to 10.

I’m not a Physics expert. But I think there’s two ways you can go about this. Depending whether the rigidBody is kinematic or not.

void Start () 
{
	rb = GetComponent<Rigidbody2D> ();

	/*if isKinematic is false*/
	rb.AddRelativeForce (GetComponent<Transform>().forward * Thrust);
}

/*if isKinematic is true*/
void FixedUpdate () 
{
	Transform bulletTransform = GetComponent<Transform>();
	rb.MovePosition(bulletTransform + (bulletTransform.forward * Thrust));
}

transform.LookAt property should do the job. Try changing the code like below:

AlienShootScript:

 using UnityEngine;
 using System.Collections;
 public class AlienShootScript : MonoBehaviour 
 {
     public GameObject AlienBulletPrefab;
     public Transform Ship;
 
     void Start () 
     {
         StartCoroutine (onCoroutine()); 
     }
 
     IEnumerator onCoroutine()
     {
         while(true) 
         { 
             GameObject bullet = Instantiate (AlienBulletPrefab);
             bullet.GetComponent<AlienBulletScript>().AdjustPositionByLookingAt(Ship.transform.position);
             yield return new WaitForSeconds(2f);
         }
     }
     
     void Update () 
     {
     
     }
 }

and here is **AlienBulletScript **:

 using UnityEngine;
 using System.Collections;
 
 public class AlienBulletScript : MonoBehaviour 
 {
     public float Thrust;
     public Rigidbody2D rb;
     public GameObject Ship;
     Vector3 shipPosition; // or instead of this variable get position from `Ship` variable just above it.

     void Start () 
     {
         rb = GetComponent<Rigidbody2D> ();
     }
     
     void Update () 
     {
         rb.AddRelativeForce (Vector3.up * Thrust);
         // or
        // float step = Thrust* Time.deltaTime;
        // transform.position = Vector3.MoveTowards(transform.position, shipPosition, step);
     }

     public void AdjustPositionByLookingAt(Vector3 src) 
     {
         transform.LookAt(src);
         shipPosition = src;
     }

 }