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);
}
}
}