Unity erreur: rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
Résolu
azerty9200
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjours je me lance dans la créeation de jeux sur Unity 3D je vient juste de commencer le #C et voila une erreur qui malheuresment je n'arrive pas a résoudre meme avec l'aide d'une personnes qui ma beaucoup aider a ce sujet !
L'erreur s'appelle rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
Voici mes 2 Script "PlayerMotor" + "PlayerController"
Script PlayerMotor :
Script PlayerController
Voila mes 2 scripts la seul erreur est donc dans la console de unity est c'est celle que je vous ais citer en haut de ce poste.
Merci a tous
L'erreur s'appelle rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
Voici mes 2 Script "PlayerMotor" + "PlayerController"
Script PlayerMotor :
using UnityEngine; [RequireComponent(typeof(Rigidbody))] public class PlayerMotor : MonoBehaviour { private Vector3 velocity; private Rigidbody rb; private void start() { rb = GetComponent<Rigidbody>(); } public void Move(Vector3 _velocity) { velocity = _velocity; } private void FixedUpdate() { PerformMovement(); } private void PerformMovement() { if(velocity != Vector3.zero) { rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime); } } }
Script PlayerController
using UnityEngine; [RequireComponent(typeof(Rigidbody))] public class PlayerMotor : MonoBehaviour { private Vector3 velocity; private Rigidbody rb; private void start() { rb = GetComponent<Rigidbody>(); } public void Move(Vector3 _velocity) { velocity = _velocity; } private void FixedUpdate() { PerformMovement(); } private void PerformMovement() { if(velocity != Vector3.zero) { rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime); } } }
Voila mes 2 scripts la seul erreur est donc dans la console de unity est c'est celle que je vous ais citer en haut de ce poste.
Merci a tous
3 réponses
Cette erreur veut dire qu’une des tes variables n’est pas définie.
A quelle ligne (sur les 3) se produit l’erreur?
A quelle ligne (sur les 3) se produit l’erreur?
azerty9200
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
7
j'ai résolue l'erreur Il fallait juste que le s de start que je le met en majuscule "Start" Merci en tous cas
Bonsoir
Tout d’abord, merci à Baladur d’avoir mis la coloration syntaxique.
Pour tes prochains messages, merci de lire et appliquer ce petit tuto
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Je ne connais pas Unity, mais je fais du C#.
Quand tu écris
L'erreur s'appelle rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
c’est inexact.
L’erreur si situe à cette ligne, ça c’est probablement exact, mais son nom c’est autre chose, par exemple
Type invalide
La méthode MovePosition prend en paramètre un Vectuer3. Velociy et position sont de ce type.
Mais est ce que
rb.position + velocity * Time.fixedDeltaTime
retourne un vecteur3, je ne sais pas.
Je te propose de décomposer pour cerner le problème
vecteur3 a = velocity * Time.fixedDeltaTime; vecteur3 b = rb.position + a; rb.MovePosition(b);
Et s’il y a une erreur, viens à quelle ligne et quel est le message (complet de préférence)
je vient juste de commencer dans le C est la programation de jeux du coup juste ce que tu as dit je trouve sa complexe ^^
Si j'ai bien comprit il faut remplacer ma fameuse ligne defectueuse rb.position + velocity * Time.fixedDeltaTime
et la remplacer par les 3 lignes que tu viens de m'ecrire ? (si c'est sa je vient de le faire est sa en fonctionne pas
et l'erreur que j'avait mal ecrite dans mon poste c'est :
NullReferenceException: Object reference not set to an instance of an object
PlayerMotor.PerformMovement () (at Assets/PlayerMotor.cs:27)
PlayerMotor.FixedUpdate () (at Assets/PlayerMotor.cs:21)
Merci de ta réponse rapide :)
Si j'ai bien comprit il faut remplacer ma fameuse ligne defectueuse rb.position + velocity * Time.fixedDeltaTime
et la remplacer par les 3 lignes que tu viens de m'ecrire ? (si c'est sa je vient de le faire est sa en fonctionne pas
et l'erreur que j'avait mal ecrite dans mon poste c'est :
NullReferenceException: Object reference not set to an instance of an object
PlayerMotor.PerformMovement () (at Assets/PlayerMotor.cs:27)
PlayerMotor.FixedUpdate () (at Assets/PlayerMotor.cs:21)
Merci de ta réponse rapide :)