Enemy gameObject didn't move

I’m actually working on a game project with Unity3D in C#. I already have a good part of my project, but i’m confronted at a problem with the implementation of enemies. Firstly I’m following this tutorial. So I have a gameobject for enemy with box collider and basically all I need. And there is my script :

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {

[SerializeField]
private float rotationSpeed = 180; // In degrees per second

[SerializeField]
private float movementSpeed = 1f; // In units per second

[SerializeField]
private float meshRadius = 1f; // In units

private IEnumerator turnTowardsPlayerCoroutine;
private IEnumerator moveTowardsPlayerCoroutine;

void OnTriggerEnter(Collider collider)
{
    if (collider.gameObject.tag == "Player")
    {
        float playerDistance = Vector3.Distance(collider.transform.position, transform.position);

        // Ignore trigger events from the inner colliders
        if (playerDistance >= 2f * meshRadius)
        {
            turnTowardsPlayerCoroutine = TurnTowardsPlayer(collider.transform);
            moveTowardsPlayerCoroutine = MoveTowardsPlayer(collider.transform);
            StartCoroutine(turnTowardsPlayerCoroutine);
            StartCoroutine(moveTowardsPlayerCoroutine);
        }
    }
}

void OnTriggerExit(Collider collider)
{
    if (collider.tag == "Player")
    {
        float playerDistance = Vector3.Distance(collider.transform.position, transform.position);

        // Ignore trigger events from the inner colliders
        if (playerDistance >= 2f * meshRadius)
        {
            StopCoroutine(turnTowardsPlayerCoroutine);
            StopCoroutine(moveTowardsPlayerCoroutine);
        }
    }
}

private IEnumerator TurnTowardsPlayer(Transform player)
{
    while (true)
    {
        Quaternion targetRotation = Quaternion.LookRotation(player.position - transform.position, Vector3.up);
        targetRotation.x = 0f;
        targetRotation.z = 0f;

        transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
        yield return 0;
    }
}

private IEnumerator MoveTowardsPlayer(Transform player)
{
    while (true)
    {
        Vector3 playerDirection = transform.position - player.position;
        playerDirection.y = 0;
        playerDirection = playerDirection.normalized;

        Vector3 deltaMovement = playerDirection * movementSpeed * Time.deltaTime;

        int layermask = LayerMask.GetMask("Environment");
        Vector3 movingTowards = transform.position - playerDirection*meshRadius + (new Vector3(0f, 0.1f, 0f));
        if (Physics.Raycast(movingTowards, Vector3.down, 0.25f, layermask))
        {
            transform.position -= deltaMovement;
        }

        yield return 0;
    }
}
}

The result is, when I enter in the zone where enemy must attacking me, the enemy rotated towards me but he didn’t move. Did I forget something or did something wrong ?

Thanks per advance!

PokeRwOw

Physics.Raycast is almost certainly false. I’ve had trouble using layermasks with raycasting before when I’ve assigned the layermask in code (no doubt due to my lack of understanding), though when I assign it though the inspector its fine.

So remove that if statement to check if that is the cause.
If so, then remove the layermask from the raycast so its Physics.Raycast(movingTowards, Vector3.down, 0.25f)…to check if its due to the layer or something else.
Continue that process until you solve it.