Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only.

    Please, do not make any changes to your username or email addresses at id.unity.com during this transition time.

    It's still possible to reply to existing private message conversations during the migration, but any new replies you post will be missing after the main migration is complete. We'll do our best to migrate these messages in a follow-up step.

    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 requires playerMotor to be derived from MonoBehaviour or to be an interface

Discussion in 'Scripting' started by falaporte51, May 2, 2024.

  1. falaporte51

    falaporte51

    Joined:
    Apr 17, 2024
    Posts:
    5
    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?


    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.         PlayerMotor.Start()
    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.     public void Move (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.