Making a projectile move towards a player but having it continue in a straight line after a short time if it misses.

Hello. Im having problem where my projectile I’m trying to make for a 2D game, will go towards the player for the short time but will stop in its tracks after there timer is up. I gave the projectile a rigid body 2D with its gravity scale set to 0, thinking that it will continue to move in a straight line after its finished with its timer. I also put a material on the object with the bounciness set to 1 so when the projectile is moving in a straight line, it will bounce off the walls

using UnityEngine;
using System.Collections;

public class BounceProject : MonoBehaviour
{
	public GameObject self;
	public Transform hit; //Who the projectile will hit

	public float moveSpeed;

	public bool canMove;
	public float timer;
	public float subtractTimer;
	public Vector3 Target;

	public bool followPlayer;

	// Use this for initialization
	void Start ()
	{
		
	}
	
	// Update is called once per frame
	void Update ()
	{
		
		if (canMove) {
			// The move script for the projectile so it follows the player
			if (timer >= 0f && followPlayer) {
				timer -= subtractTimer;
				self.transform.position = Vector3.MoveTowards (self.transform.position, Target, moveSpeed * Time.deltaTime);
				Target = hit.position; //The target of the projectile

				}
			if (!followPlayer || timer <= 0) {
				
				}
			}
		}

	void OnBecameVisible()
	{
		canMove = true;
	}
		
}

Vector3.MoveTowards will not use the physics of a RigidBody. You’ll need to use something like this:

Vector2 directionToTarget = target.position - start.position; 
rigidBody.AddForce(directionToTarget * amountOfForce, ForceMode.Impulse);

Do not directly modify the position of a rigidbody, it causes the physics engine to skip at least 1 frame and recalculate everything.