Player Motor [Ne Bouge pas] (résolu)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
IkaGame
Messages : 75
Inscription : 13 Oct 2016 15:43

Player Motor [Ne Bouge pas] (résolu)

Message par IkaGame » 04 Mai 2018 01:52

Hello à toutes et à tous !

Voila voila , je reviens vers vous pour un petit soucis ma foi assez gênant....

Explication :

Je suit un tutoriel , ( que vous pouvez trouvez ici : https://www.youtube.com/watch?v=aPy_eI2pQcc&t=19s) qui explique comment faire avancer le personnage , ainsi que lui faire bouger la caméra , mais petit problème dans le script et sur la console , Unity ne trouve pas le Rigidbody pourtant bien assigner à mon "Player"

Screen & Scripts :
bug.jpg
bug.jpg (112.77 Kio) Consulté 4628 fois

Code : Tout sélectionner

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class PlayerMotor : MonoBehaviour {

    [SerializeField]
    private Camera cam;

   private Vector3 velocity;
   private Vector3 rotation;
   private Vector3 cameraRotation;


    private Rigidbody rb;

   private void start()
   {
      rb = GetComponent<Rigidbody>();
   }

   public void Move(Vector3 _velocity)
   {
    velocity = _velocity;
   }

    public void Rotate(Vector3 _rotation)
    {
        rotation = _rotation;
    }

    public void RotateCamera(Vector3 _cameraRotation)
    {
        cameraRotation = _cameraRotation;
    }

    private void FixedUpdate()
    {
     PerformMovement();
     PerformRotation();
    }

   private void PerformMovement() {
      if (velocity != Vector3.zero)
        {
            rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);

        }

  }

    private void PerformRotation()
    {
        rb.MoveRotation(rb.rotation * Quaternion.Euler(rotation));
        cam.transform.Rotate(-cameraRotation);

    }

}

Les lignes en question :

Code : Tout sélectionner

PerformRotation();

Code : Tout sélectionner

rb.MoveRotation(rb.rotation * Quaternion.Euler(rotation));
J'avais remarqué que plusieurs personne avais le même soucis que moi , je me suit donc permis de poster un message ici afin d'avoir de meilleur réponse .

Merci de votre aide.
Dernière édition par IkaGame le 05 Mai 2018 08:35, édité 1 fois.

Avatar de l’utilisateur
BenoitFreslon
Messages : 27
Inscription : 02 Mai 2018 13:10
Contact :

Re: Player Motor [Ne Bouge pas]

Message par BenoitFreslon » 04 Mai 2018 08:51

Bonjour IkaGame,

A vu de nez il semble que la méthode "start" n'est pas correctement écrite.
Ce qui veut dire qu'elle ne sera jamais lancée au démarrage de ton GameObject.
N'oublie pas le S majuscule à ta méthode Start()

;-)
Si ça fonctionne, on ne touche plus.
-
Développeur de jeux indépendants depuis 2006
Blog création de jeux vidéo | Portfolio
Ebook Gratuit : "BIEN DÉBUTER LA CRÉATION DE SON JEU VIDÉO"

IkaGame
Messages : 75
Inscription : 13 Oct 2016 15:43

Re: Player Motor [Ne Bouge pas]

Message par IkaGame » 04 Mai 2018 12:53

C'est ce que je me suis dit également ..

J'ai jamais compris pourquoi dans le tuto des gens sa fonctionnais toujours , mais lorsque nous tentons l'expérience , énormément d'échec...

J'ai "majusculé" le void Start (){

mais mon Player ne bouge toujours pas... toutes les conditions sont rempli et bien ranger dans l'inspector...

J'ai également vérifier les Inputs et les Axe , tout à l'air fonctionnel .

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Player Motor [Ne Bouge pas]

Message par boubouk50 » 04 Mai 2018 13:18

Comment initialises-tu la variable rotation?
Telle quelle, elle n'est affectée que dans le fonction Rotate (). Si PerformRotation () est appelée avant qu'elle ne soit initialisée, elle sera nulle, donc lèvera une erreur.
As-tu bien mis à jour PlayerController.cs qui appelle Rotate () dans son Update ()?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

IkaGame
Messages : 75
Inscription : 13 Oct 2016 15:43

Re: Player Motor [Ne Bouge pas]

Message par IkaGame » 04 Mai 2018 13:40

Je l'ai initialiser en private Vector3 dans le script PlayerMotor ... dans le tutoriel la fontion est bien codé après pourtant :aille:
je suis vraiment nul en prog , je pense que vous vous en doutez..

J'ai vérifier l'update , le script et bel et bien à jour ...
bug.jpg
bug.jpg (96.56 Kio) Consulté 4553 fois


et voici le script PlayerController :


Code : Tout sélectionner

using UnityEngine;

[RequireComponent(typeof(PlayerMotor))]

public class PlayerController : MonoBehaviour {

      [SerializeField]
      private float speed = 3f;
      [SerializeField]
      private float lookSensitivity = 3f;

    private PlayerMotor motor;

      private void Start()

      {
      motor = GetComponent<PlayerMotor>();
      }

     private void update()
      {
         // On va calculer la vélocité du mouvement du joueur en un Vecteur 3D
         float _xMov = Input.GetAxisRaw("Horizontal");
         float _zMov = Input.GetAxisRaw("Vertical");

         Vector3 _movHorizontal = transform.right * _xMov;
         Vector3 _movVertical = transform.forward * _zMov;

         Vector3 _velocity = (_movHorizontal + _movVertical).normalized * speed;

         motor.Move(_velocity);

        //On va calculer la rotation du joueur en un vecteur 3D
        float _yRot = Input.GetAxisRaw("Mouse X");

        Vector3 _rotation = new Vector3(0, _yRot, 0) * lookSensitivity;

        motor.Rotate(_rotation);
    

        //On va calculer la rotation de la caméra du joueur en un vecteur 3D
         float _xRot = Input.GetAxisRaw("Mouse Y");

         Vector3 _cameraRotation = new Vector3(_xRot, 0, 0) * lookSensitivity;
         motor.RotateCamera(_cameraRotation);
 }
      }

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: Player Motor [Ne Bouge pas]

Message par DevAmat » 04 Mai 2018 14:17

La fonction "update()" est mal orthographiée, il faut mettre une majuscule -> "Update()"

IkaGame
Messages : 75
Inscription : 13 Oct 2016 15:43

Re: Player Motor [Ne Bouge pas]

Message par IkaGame » 04 Mai 2018 19:57

Ah c'est bien fonctionnel !!! merci encore de vos aides fructueuse , je connais une petite communauté qui va être content.

Alors , avant de clore le sujet , si j'ai bien compris le problème proviens de l’orthographe , car selon comment la function est écrite ; Unity ne la reconnais pas forcément , et ceux d'une minuscule à une majuscule ?

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Player Motor [Ne Bouge pas]

Message par Max » 04 Mai 2018 22:23

Bonsoir,
IkaGame a écrit :
04 Mai 2018 19:57
Alors , avant de clore le sujet , si j'ai bien compris le problème proviens de l’orthographe , car selon comment la function est écrite ; Unity ne la reconnais pas forcément , et ceux d'une minuscule à une majuscule ?
Même si pour nous humain, on ne le sentiment que c'est plus ou moins pareil (entre par exemple un s ou un S), pour nos machines ce sont des lettres qui n'ont rien à voir. Et ce n'est pas lié à Unity. C'est ce que l'on appelle la sensibilité à la casse. Donc oui, il faut être extrêmement rigoureux dans la syntaxe employée, et parfaitement respecter ce qui est écrit dans la doc par exemple.
Sur certains système (Linux par exemple), même les noms de fichiers son concernés. Readme.txt ne sera pas le même fichier que readme.txt par exemple.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Scripting »