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 ?
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()
{
moteur = GetComponent<PlayerMotor>();
}
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>();
}
Déplacement vide public (Vector3 _velocity)
{
vitesse = _vitesse ;
}
vide privé FixUdapte()
{
EffectuerMouvement();
}
vide privé PerformMovement()
{
si(vitesse != Vecteur3.zéro)
{
rb.MovePosition(rb.position + vitesse * Time.fixedDeltaTime);
}
}
}