Unity erreur: rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);

Résolu/Fermé
azerty9200 Messages postés 54 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 25 février 2020 - Modifié le 20 juil. 2019 à 17:45
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 - 23 juil. 2019 à 00:40
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 :

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
A voir également:

3 réponses

Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 932
21 juil. 2019 à 13:12
Cette erreur veut dire qu’une des tes variables n’est pas définie.
A quelle ligne (sur les 3) se produit l’erreur?
1
azerty9200 Messages postés 54 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 25 février 2020 7
22 juil. 2019 à 21:27
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
0
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 932
23 juil. 2019 à 00:40
Très bien, dans ce cas, pense à marquer le sujet résolu avec la roue dentée tout en haut du fil
1
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 932
Modifié le 2 août 2022 à 11:14

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)


0
azerty9200 Messages postés 54 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 25 février 2020 7
21 juil. 2019 à 12:33
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 :)
0