Need help with Enemy_Charging Behavior

I having problem with writing the code for my game charging enemy…The enemy was suppose to like a rhino charge…Where it will detect the player location and charge at the point. But it seem to flicker after it start charging… need help with it. Thanks

using UnityEngine;
using System.Collections;

public class Enemy_Charge : MonoBehaviour
{

    public GameObject Player;
    public float Velocity = 0;

    public Vector3 movement;
    bool isCharging = false;
    bool ischargeLeft = false;
    bool ischargeRight = false;


    void Update ()
    {
        Charge();
    }

    public void Charge()
    {
        if(isCharging == false)
        {
            if(Velocity >= 1)
            {
                Velocity -= 1;
            }
            else
            {
                Velocity = 0;
            }


            Invoke("CalculateDirection",2);
        }
        else
        {
            if (ischargeLeft)
            {
                if (Player.transform.position.x > this.transform.position.x || Player.transform.position.x == this.transform.position.x)
                {
                    isCharging = false;
                }
                else
                {
                    Velocity += 1;
                    movement.x = -0.5f * Velocity;
                    movement.y = this.transform.position.y;
                    movement.z = this.transform.position.z;
                    this.transform.position = movement;
                }


            }

            else if (ischargeRight)
            {
                if (Player.transform.position.x < this.transform.position.x || Player.transform.position.x == this.transform.position.x)
                {
                    isCharging = false;
                }
                else
                {
                    Velocity += 1;
                    movement.x = 0.5f * Velocity;
                    movement.y = this.transform.position.y;
                    movement.z = this.transform.position.z;
                    this.transform.position = movement;
                }

            }

        }


    }

    public void CalculateDirection()
    {
        if (Player.transform.position.x < this.transform.position.x)
        {
            ischargeLeft = true;
            ischargeRight = false;
            isCharging = true;
        }
        else if (Player.transform.position.x > this.transform.position.x)
        {

            ischargeRight = true;
            ischargeLeft = false;
            isCharging = true;
        }

    }

}

By flicker you mean the entire time its charging not just at the start?
If so, its because your directly setting the position of the object instead of figure out its “speed” and then moving it each frame based on the time thats past. Each of those frames your calling is happening roughly every .02 seconds on a 50 fps game. So your probably moving your enemy way too fast:

Try this:

ing UnityEngine;
using System.Collections;
public class Enemy_Charge : MonoBehaviour
{
    public GameObject Player;
    public float Velocity = 0;

    // How many units per second it should move at Velocity 1
    public float speedFactor = 1f;

    public Vector3 movement;
    bool isCharging = false;
    bool ischargeLeft = false;
    bool ischargeRight = false;
    void Update ()
    {
        Charge();
    }
    public void Charge()
    {
        if(isCharging == false)
        {
            if(Velocity >= 1)
            {
                Velocity -= 1;
            }
            else
            {
                Velocity = 0;
            }
            Invoke("CalculateDirection",2);
        }
        else
        {
            if (ischargeLeft)
            {
                if (Player.transform.position.x > this.transform.position.x || Player.transform.position.x == this.transform.position.x)
                {
                    isCharging = false;
                }
                else
                {
                    Velocity += 1;
                    movement.x = -0.5f * Velocity*Time.deltaTime*speedFactor;
                    movement.y = this.transform.position.y;
                    movement.z = this.transform.position.z;
                    this.transform.position = movement;
                }
            }
            else if (ischargeRight)
            {
                if (Player.transform.position.x < this.transform.position.x || Player.transform.position.x == this.transform.position.x)
                {
                    isCharging = false;
                }
                else
                {
                    Velocity += 1;
                    movement.x = 0.5f * Velocity*Time.deltaTime*speedFactor;
                    movement.y = this.transform.position.y;
                    movement.z = this.transform.position.z;
                    this.transform.position = movement;
                }
            }
        }
    }
    public void CalculateDirection()
    {
        if (Player.transform.position.x < this.transform.position.x)
        {
            ischargeLeft = true;
            ischargeRight = false;
            isCharging = true;
        }
        else if (Player.transform.position.x > this.transform.position.x)
        {
            ischargeRight = true;
            ischargeLeft = false;
            isCharging = true;
        }
    }

This should make your enemy move much smoother. If it seems too slow, just increase speedFactor til it looks right. This way your taking into account how much time passes each frame when you move your enemy.