[RESOLU] Problème de script (Saut du personnage)

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
BolMog46
Messages : 4
Inscription : 17 Avr 2018 18:29

[RESOLU] Problème de script (Saut du personnage)

Message par BolMog46 » 17 Avr 2018 18:40

Bonjour à tous,

Je regarde les tutos de TUTO UNITY FR sur YouTube mais j'ai rencontré un problème que je n'arrive pas à régler: mon personnage ne veux pas sauter.

Voici le script en questio,

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class character_motor : MonoBehaviour {

    // Animation du perso
    Animation animations;

    // Vitesse de déplacement
    public float walkSpeed;
    public float runSpeed;
    public float turnSpeed;

    // Inputs
    public string inputFront;
    public string inputBack;
    public string inputLeft;
    public string inputRight;
    public string inputRun;
    public string inputJump;

    public Vector3 jumpSpeed;
    CapsuleCollider playerCollider;


    void Start () {
        animations = gameObject.GetComponent<Animation>();
        playerCollider = gameObject.GetComponent<CapsuleCollider>();

	}
	
    bool IsGrounded()
    {
        // Ici on vérifie s'il y a un sol sous le joueur
        return Physics.CheckCapsule(playerCollider.bounds.center, new Vector3(playerCollider.bounds.center.x, playerCollider.bounds.min.y - 0.01f, playerCollider.bounds.center.z), 0.1007767f);
    }

	void Update () {

        // Si on avance
        if (Input.GetKey(inputFront) && !Input.GetKey(inputRun))
        {
            transform.Translate(0, 0, walkSpeed * Time.deltaTime);
            animations.Play("walk");
        }
       

        // Si on recule
        if (Input.GetKey(inputBack))
        {
            transform.Translate(0, 0, -(walkSpeed / 2) * Time.deltaTime);
            animations.Play("walk");
        }

        // Rotation à gauche
        if (Input.GetKey(inputLeft))
        {
            transform.Rotate(0, -turnSpeed * Time.deltaTime, 0);
        }

        // Rotation à droite
        if (Input.GetKey(inputRight))
        {
            transform.Rotate(0, turnSpeed * Time.deltaTime, 0);
        }

        // Si on avance
        if (Input.GetKey(inputFront) && Input.GetKey(inputRun))
        {
            transform.Translate(0, 0, runSpeed * Time.deltaTime);
            animations.Play("run");
        }

        // Si on n'avance pas et qu'on ne recule pas
        if (!Input.GetKey(inputFront) && !Input.GetKey(inputBack))
        {
            animations.Play("idle");
        }

        // Si on saute
        if(Input.GetKeyDown(inputJump) && IsGrounded())
        {

            //Préparation du saut (Nécéssaire en C#)
            Vector3 v = gameObject.GetComponent<Rigidbody>().velocity;
            v.y = jumpSpeed.y;

            // Saut
            gameObject.GetComponent<Rigidbody>().velocity = jumpSpeed;
        }

    }

}
J'espère que vous pourrez m'aider, et en attendant je vous souhaite une bonne soirée :-D
.
 ! Message de : Max
Utilisez les balises code SVP, et attention à la section dans laquelle vous postez.
Merci de lire la Netiquette.

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

Re: [C#] Problème de script (Saut du personnage)

Message par Max » 17 Avr 2018 19:07

Bonsoir BolMog46,

Niveau velocity, c'est bizarre. Tu sauvegardes la velocity du rigidbody dans 'v', puis tu en modifies la composante 'y', et tu assignes pour nouvelle velocity 'jumpSpeed'.
Cela devrait plutôt être gameObject.GetComponent<Rigidbody>().velocity = v; ?
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

BolMog46
Messages : 4
Inscription : 17 Avr 2018 18:29

Re: [C#] Problème de script (Saut du personnage)

Message par BolMog46 » 17 Avr 2018 20:56

Tout d'abord je tiens à m'excuser de pas avoir respecter les règles du forum, je ferai attention la prochaine.

Pour revenir au script, j'ai essayé ce que vous m'avez conseillé mais sans succès. J'ai donc ensuite essayer de retaper le script mais encore une fois sans succès. Donc je pense que le problème viens d'un bugg logiciel ou autre chose comme çà. Mais si vous avez d'autres idées pourriez-vous me les communiquées SVP.

Merci d'avance et bonne soirée.

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

Re: [C#] Problème de script (Saut du personnage)

Message par Max » 17 Avr 2018 20:59

tu as le lien du tuto que tu as suivit ?

Sinon, as-tu tester pour voir si tu rentrais bien dans ton if(Input.GetKeyDown(inputJump) && IsGrounded()) ? (place un Debug.Log par exemple).
Tes variables publiques sont-elles bien assignées au niveau de l'inspector ?
BolMog46 a écrit :
17 Avr 2018 20:56
Donc je pense que le problème viens d'un bugg logiciel ou autre chose comme çà.
heu non, il ne faut pas compter la dessus. :mrgreen:
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

BolMog46
Messages : 4
Inscription : 17 Avr 2018 18:29

Re: [C#] Problème de script (Saut du personnage)

Message par BolMog46 » 17 Avr 2018 21:18

Ok d'un côté çà me rassure que ce soit le script :)

Je suis débutant donc je ne connais pas le Debug.Log, pourriez-vous dire où dois-je le mettre SVP?

Voici le lien du tuto: https://www.youtube.com/watch?v=-DQrS_RiEqs
Le saut du personnage est a la fin.

Merci d'avance

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

Re: [C#] Problème de script (Saut du personnage)

Message par Max » 17 Avr 2018 22:14

je t'avoue que je reste perplexe sur certaines parties de son code. Bref.
En parcourant vite fait, c'est pas playerCollider.bounds.min.y - 0.01f mais playerCollider.bounds.min.y - 0.1f.
Ceci dit, même un code transcrit correctement ne suffit pas. Il faut une bonne conf des éléments du gameobject, en particulier les setting du script dans l'inspector..
BolMog46 a écrit :
17 Avr 2018 21:18
Je suis débutant donc je ne connais pas le Debug.Log, pourriez-vous dire où dois-je le mettre SVP?
Debug.Log, voir la doc. En gros cela te permet d'afficher dans la console des informations.
Dans mon commentaire, je disais de contrôler si ta conditions se vérifiait, par exemple:

Code : Tout sélectionner

        // Si on saute
        if(Input.GetKeyDown(inputJump) && IsGrounded())
        {
           Debug.Log("Saut");
           ....
        }
        


Si tu débutes, alors tu commences par des choses pas vraiment simples, et tu vas vite être perdu (si je puis me permettre).
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

BolMog46
Messages : 4
Inscription : 17 Avr 2018 18:29

Re: [C#] Problème de script (Saut du personnage)

Message par BolMog46 » 19 Avr 2018 14:17

Merci beaucoup pour votre aide, mais en fait, le problème était que le Rigidbody a été supprimé quand le jeu a été lancé à cause d'une erreur de manipulation certainement. :gene:

Mais en tout cas merci beaucoup car vous m'avez quand même appris qu'il existe une documentation Unity (chose que je ne savais pas). Et je pense que vous avez raison, ceci est un peu compliquer pour débuter.

Bonne continuation à vous :-D

Répondre

Revenir vers « (C#) CSharp »