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 -
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

3 réponses

Utilisateur anonyme
 
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   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
0
Utilisateur anonyme
 
Très bien, dans ce cas, pense à marquer le sujet résolu avec la roue dentée tout en haut du fil
1
Utilisateur anonyme
 

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   Statut Membre Dernière intervention   7
 
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