Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only. On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live. Read our full announcement for more information and let us know if you have any questions.

Question Getcompoment demande que playerMotor dérive de MonoBehaviour ou soit une interface

Discussion in 'Getting Started' started by falaporte51, Apr 24, 2024.

  1. falaporte51

    falaporte51

    Joined:
    Apr 17, 2024
    Posts:
    5
    Bonjour, je débute sur Unity et dans tout ce qui est programmation et je actuellement en train de créer un jeu en 3d et quand je compile les deux codes si dessous, un message d'erreur m'indique cela :

    " 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 () (à Assets/PlayerController.cs:14) "

    Pouvez-vous m'aider ?

    Code (CSharp):
    1. en utilisant le système ;
    2. en utilisant UnityEngine ;
    3.  
    4. [RequireComponent (type de (PlayerMotor))]
    5. classe publique PlayerController : MonoBehaviour
    6. {
    7.     [SérialiserChamp]
    8.     vitesse du flotteur privé ;
    9.  
    10.     moteur PlayerMotor privé ;
    11.  
    12.     privé vide Début()
    13.     {
    14.         moteur = GetComponent<PlayerMotor>();
    15.     }
    16.  
    17.     Mise à jour du vide privé ()
    18.     {
    19.         // Calculer la vélocité (vitesse) du mouvement de notre joueur
    20.         float xMov = Input.GetAxisRaw("Horizontal");
    21.         float zMov = Input.GetAxisRaw("Vertical");
    22.  
    23.         Vector3 moveHorizontal = transform.right * xMov;
    24.         Vector3 moveVertical = transform.forward * zMov;
    25.  
    26.         Vitesse Vector3 = (moveHorizontal + moveVertical).normalized * vitesse ;
    27.  
    28.  
    29.         //On calcule la rotation du joueur en un vector3
    30.         float yRot = Input.GetAxis("Souris X");
    31.     }
    32.  
    33.  
    34.     PlayerMotor de classe privée
    35.     {
    36.         Déplacement du vide interne (vitesse Vector3)
    37.         {
    38.             lancer une nouvelle NotImplementedException();
    39.         }
    40.  
    41.  
    42.     }
    43. }

    Code (CSharp):
    1. en utilisant le système ;
    2. en utilisant UnityEngine ;
    3.  
    4. [RequireComponent (type de (Rigidbody))]
    5. classe publique PlayerMotor : MonoBehaviour
    6. {
    7.     vitesse Vector3 privée ;
    8.     corps rigide privé rb;
    9.  
    10.     privé vide Début()
    11.     {
    12.         rb = GetComponent<Rigidbody>();
    13.     }
    14.  
    15.     Déplacement vide public (Vector3 _velocity)
    16.     {
    17.         vitesse = _vitesse ;
    18.     }
    19.  
    20.     vide privé FixUdapte()
    21.     {
    22.         EffectuerMouvement();
    23.     }
    24.  
    25.     vide privé PerformMovement()
    26.     {
    27.         si(vitesse != Vecteur3.zéro)
    28.         {
    29.             rb.MovePosition(rb.position + vitesse * Time.fixedDeltaTime);
    30.         }
    31.  
    32.  
    33.     }
    34. }
    35.  
    36.  
    37.