How to immediately CHANGE SPEED from spotted position to another?)

I’m creating 2d game where is the enemy moving with usual speed 2,5 and switching to speed 4 when spotted a character

What I need to change in my script to switching between 2 speed type immediately, not smooth.

Please try to help to solve this.

using UnityEngine;
using System.Collections;

public class EnemyPatrol : MonoBehaviour {

	public float moveSpeed;
	public bool moveRight;

	public Transform sightStart, sightEnd;

	public bool spotted = false;

	public GameObject arrow;

	public LayerMask detectionLayers;

	public Transform wallCheck;
	public float wallCheckRadius;
	public LayerMask whatIsWall;
	private bool hittingWall;

	public Transform edgeCheck;
	public float edgeCheckRadius;
	private bool notAtEdge;

	public float timer = 3f; //Чтобы изменить время остановки нужно изменить кроме этого значения еще значение ниже, того же timer

	Animator anim;

	private Rigidbody2D rb2d;

	void Start () {
		
		rb2d = gameObject.GetComponent<Rigidbody2D>();

		anim = GetComponent<Animator>();
	}

	void FixedUpdate () {
		
		anim.SetFloat ("Speed", Mathf.Abs(rb2d.velocity.x));

	}
		
	void Update () {

		Raycasting ();
		Behaviours ();

		hittingWall = Physics2D.OverlapCircle (wallCheck.position, wallCheckRadius, whatIsWall);

		notAtEdge = Physics2D.OverlapCircle (edgeCheck.position, edgeCheckRadius, whatIsWall);

		if (hittingWall || !notAtEdge) {

			if (timer > 0) {
				
				timer -= Time.deltaTime;

				return;
			} 

			moveRight = !moveRight;

			timer = 3f;
		}

		if (moveRight) 
		{ 
			transform.localScale = new Vector3 (0.75f, 0.75f, 1f);
			GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, rb2d.velocity.y);

		} else {
			transform.localScale = new Vector3 (-0.75f, 0.75f, 1f);
			GetComponent<Rigidbody2D>().velocity = new Vector2(-moveSpeed, rb2d.velocity.y);
		
		}
	}

	void Raycasting() 
	{
		Debug.DrawLine (sightStart.position, sightEnd.position, Color.green);
		spotted = Physics2D.Linecast (sightStart.position, sightEnd.position, detectionLayers); 
	}

	void Behaviours() 
	{
		if (spotted == true) {
			arrow.SetActive (true);
			moveSpeed = 4;
		} else {
			arrow.SetActive (false);
			moveSpeed = 2.5;
		}
	}
}

You should not handle rigidbody velocity on Update. It should be in FixedUdate. And anim could be in Update.
Ah, and use your rb2d instead call getcomponent every frame…