Tower defense 2d, I can't see the arrows' sprite

When the enemies enter in the range of the tower, the arrows should hit the nearest enemy, but they are being created idle. they are not moving themselves to the target. Another thing is they are being created too fast.

This is my arrow controller. I attach this in my tower. This script receives a game object which is called arrow. It is a prefab.

// Use this for initialization
    void Start()
    {
        InvokeRepeating( "getTarget", 0, 1.0f );
    }
   
    void Update()
    {
        if( target != null )
        {
            transform.LookAt( target );

            shoot();
        }
    }

    void shoot()
    {
        GameObject arrow = (GameObject)Instantiate( arrowPrefab, GameObject.Find( "spawnPoint" ).transform.position, transform.rotation );

        Debug.Log( "arrow = " + arrow.transform.position );

        arrow.SetActive( true );
        arrow.GetComponent<Rigidbody2D>().AddForce( transform.forward * initialSpeed );
    }
   
    void getTarget()
    {
        GameObject[] allTaggedZombies = GameObject.FindGameObjectsWithTag( enemyTag );
       
        float distanceDetect = Mathf.Infinity; //Initialize the var with the fartherst distance
       
        Transform closestTargetPosition = null;
       
        foreach( GameObject taggedTarget in allTaggedZombies )
        {
            distance = ( taggedTarget.transform.position - transform.position ).magnitude;

            if( distance < range )
            {
                if( distance < distanceDetect )
                {
                    distanceDetect = distance;

                    closestTargetPosition = taggedTarget.transform;
                }
            }
        }

        target = closestTargetPosition;
    }

have you defined initial speed or not ?
For the arrows being created too fast try delaying the object instantiation by using Time.time
like :-

if(enemy_is_in_range )
{
       if(Time.time-delay_time>0.5)
      {
      //instantiate  object.
      }
}
else
{
delay_time=Time.time;
}

or try delaying like this :-

void Start()
{
fireRate=0.5;
nextFire=Time.time      
}

void Update()
{
//
//
//
if ( enemy_is_in_range  && Time.time > nextFire) {
            nextFire = Time.time + fireRate;
          
//instantiate the object
        }
//
//
//
}