Getcompoment requires playerMotor to be derived from MonoBehaviour or to be an interface

Bonjour, je suis nouveau sur Unity et tout ce qui concerne la programmation et je crée actuellement un jeu 3D et lorsque je compile les deux codes ci-dessous, un message d’erreur me dit ceci :
"ArgumentException : GetComponent nécessite que le composant demandé ‘PlayerMotor’ dérive de MonoBehaviour ou Component ou soit une interface.
UnityEngine.Component.GetComponent[T] () (dans /Users/bokken/build/output/unity/unity/Runtime/Export/Scripting/Component.bindings.cs:42)
PlayerController.Start () (dans Assets/PlayerController.cs:14) "
Pouvez-vous m’aider?

en utilisant le système ;
en utilisant UnityEngine ;

[RequireComponent (type de (PlayerMotor))]
classe publique PlayerController : MonoBehaviour
{
    [SérialiserChamp]
    vitesse du flotteur privé ;

    moteur PlayerMotor privé ;

    privé vide Début()
    {
        PlayerMotor.Start()
    }

    Mise à jour du vide privé ()
    {
        // Calculer la vélocité (vitesse) du mouvement de notre joueur
        float xMov = Input.GetAxisRaw("Horizontal");
        float zMov = Input.GetAxisRaw("Vertical");

        Vector3 moveHorizontal = transform.right * xMov;
        Vector3 moveVertical = transform.forward * zMov;

        Vitesse Vector3 = (moveHorizontal + moveVertical).normalized * vitesse ;


        //On calcule la rotation du joueur en un vector3
        float yRot = Input.GetAxis("Souris X");
    }


    PlayerMotor de classe privée
    {
        Déplacement du vide interne (vitesse Vector3)
        {
            lancer une nouvelle NotImplementedException();
        }


    }
}
en utilisant le système ;
en utilisant UnityEngine ;

[RequireComponent (type de (Rigidbody))]
classe publique PlayerMotor : MonoBehaviour
{
    vitesse Vector3 privée ;
    corps rigide privé rb;

    privé vide Début()
    {
        rb = GetComponent<Rigidbody>();
    }

    public void Move (Vector3 _velocity)
    {
        vitesse = _vitesse ;
    }

    vide privé FixUdapte()
    {
        EffectuerMouvement();
    }

    vide privé PerformMovement()
    {
        si(vitesse != Vecteur3.zéro)
        {
            rb.MovePosition(rb.position + vitesse * Time.fixedDeltaTime);
        }


    }
}