[DB - AL] Problème lors de la descente après le saut

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
Hekinox
Messages : 12
Inscription : 05 Avr 2017 23:25

[DB - AL] Problème lors de la descente après le saut

Message par Hekinox » 08 Mai 2017 09:58

Bonjour,

D'abord, je m'excuse si je ne suis pas dans la bonne catégorie, je ne savais pas trop ou poster ça.

Donc j'ai créé une animation "sauter" avec MotionBuilder, je l'ai intégrée dans le jeu ect (animator, script,...), elle fonctionne mais mon personnage redescend très lentement, comme si il y avait une gravité énorme, je ne sais pas trop comment régler cela...

Voici la partit de mon script qui intervient :

Code : Tout sélectionner

if (Input.GetKeyDown(KeyCode.Space))
            {
               //transform.Translate(Vector3.up * saut * Time.deltaTime); 
               anim.Play("sauter");
               //transform.Translate(Vector3.down * saut * Time.deltaTime); 
            }
Je me demande aussi si les lignes en commentaires peuvent s'avérer utiles ou pas mais en tout cas, avec ou sans, le résultat est le même... Même chose en laissant le vecteur down uniquement. Normalement elles ne devraient pas être utiles car la montée et la descente sont comprises dans l'animation.

Voici un screen des réglages sur le personnage :
Image

En changeant sa masse dans le rigidbody, le problème persiste également...

J'ai aussi essayé de placer le personnage plus haut dans la scène et de lancer le jeu pour observer ce que ça fait et là, pareil, la descente est trop lente...

Merci beaucoup de votre aide.

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: [DB - AL] Problème lors de la descente après le saut

Message par evereal » 08 Mai 2017 14:13

Ça peut venir de beaucoup de chose, je regarderais en premier si ton animation est bien de type humanoid, et que l'avatar est bien configuré.
Ensuite que les "root transform position" de l'animation sont bien configuré.
Regarde aussi comment se comporte le collider de ton personnage (en regardant dans la scène quand ton jeu est lancé)
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Hekinox
Messages : 12
Inscription : 05 Avr 2017 23:25

Re: [DB - AL] Problème lors de la descente après le saut

Message par Hekinox » 08 Mai 2017 14:24

Merci de ta réponse, j'ai déjà vérifié tout cela mais rien n'y fait... :/

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

Re: [DB - AL] Problème lors de la descente après le saut

Message par Max » 08 Mai 2017 14:50

Bonjour,

Tu parles de saut, modification rigidbody, donc ton problème de saut se situe peut-être déjà au niveau du 'Controller' de ton personnage. Quel est le code ? est-ce un code perso ?
A titre d'info, dans le StandardAsset, partie Characters/ThirdPersonCharacter, essais de voir comment c'est géré au niveau du prefab ThirdPersonController (cette feignasse d'Ethan), les différents settings, et en particulier le script ThirdPersonCharacter.cs, où il y a la gestion du couple physique/animation.
;)
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

Hekinox
Messages : 12
Inscription : 05 Avr 2017 23:25

Re: [DB - AL] Problème lors de la descente après le saut

Message par Hekinox » 08 Mai 2017 15:31

Bonjour,

Merci pour ta réponse mais je n'utilise pas ce script des standards assets, j'utilise par contre le MouseLook.

Voici mon script pour les déplacements/animations si cela peut être utilise mais je ne pense pas :

Code : Tout sélectionner

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

public class Mouvements : MonoBehaviour
{
    public int speed = 1;
    public int speed_run = 3;

    static Animator anim;

    void Start()
    {
        anim = GetComponent<Animator>();
    }

    void Update()
    {
        anim.SetBool("IsIdle", true);
        anim.SetBool("IsAvancerETreculer", false);
        anim.SetBool("IsCourir", false);
        anim.SetBool("IsSauter", false);


        if (Input.GetKey(KeyCode.Z))
        {
            if (Input.GetKey(KeyCode.LeftShift))
            {
                transform.Translate(Vector3.forward * speed_run * Time.deltaTime); //devant (plus vite)
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsAvancerETreculer", false);
                anim.SetBool("IsCourir", true);
                anim.SetBool("IsSauter", false);
            }

            else
            {
                transform.Translate(Vector3.forward * speed * Time.deltaTime); //devant
                anim.SetBool("IsAvancerETreculer", true);
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsCourir", false);
                anim.SetBool("IsSauter", false);
            }
        }


        if (Input.GetKey(KeyCode.D))
        {
            if (Input.GetKey(KeyCode.LeftShift))
            {
                transform.Translate(Vector3.right * speed * Time.deltaTime); //droite 
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsAvancerETreculer", false);
                anim.SetBool("IsCourir", true);
                anim.SetBool("IsSauter", false);
            }
            else
            {
                transform.Translate(Vector3.right * speed * Time.deltaTime); //droite
                anim.SetBool("IsAvancerETreculer", true);
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsCourir", false);
                anim.SetBool("IsSauter", false);
            }
        }


        if (Input.GetKey(KeyCode.Q))
        {
            if (Input.GetKey(KeyCode.LeftShift))
            {
                transform.Translate(Vector3.left * speed * Time.deltaTime); //gauche 
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsAvancerETreculer", false);
                anim.SetBool("IsCourir", true);
                anim.SetBool("IsSauter", false);
            }
            else
            {
                transform.Translate(Vector3.left * speed * Time.deltaTime); //gauche
                anim.SetBool("IsAvancerETreculer", true);
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsCourir", false);
                anim.SetBool("IsSauter", false);
            }
        }


        if (Input.GetKey(KeyCode.S))
        {
            if (Input.GetKey(KeyCode.LeftShift))
            {
                transform.Translate(Vector3.back * speed * Time.deltaTime); //derriere 
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsAvancerETreculer", false);
                anim.SetBool("IsCourir", true);
                anim.SetBool("IsSauter", false);
            }
            else
            {
                transform.Translate(Vector3.back * speed * Time.deltaTime); //derriere
                anim.SetBool("IsAvancerETreculer", true);
                anim.SetBool("IsIdle", false);
                anim.SetBool("IsCourir", false);
                anim.SetBool("IsSauter", false);
            }
        }


        if (Input.GetKeyDown(KeyCode.Space))
        {
            anim.Play("sauter");
        }



        if ((Input.GetKeyDown(KeyCode.U) || Input.GetKeyDown(KeyCode.I) || Input.GetKeyDown(KeyCode.O) || Input.GetKeyDown(KeyCode.P)))
        {
            anim.Play("idleSORT");
        }

    }
}

Effectivement, après avoir essayer de faire tomber un simple cube, la chute est normale au contraire de mon personnage...

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

Re: [DB - AL] Problème lors de la descente après le saut

Message par Max » 08 Mai 2017 17:09

La visiblement dans ton code, tu ne gère absolument pas la physique.
Pour un réel contrôle avec interaction, des sauts un tant soit peu réaliste, etc... l'ajout d'un simple RigidBody ne suffit pas.
Je pense que si tu souhaites créer un 'controller' pour ton personnage, tu devrais vraiment regarder du coté des exemples (comme celui cité dans mon post au dessus), mais aussi lorgner du coté de quelques tuto.
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

Hekinox
Messages : 12
Inscription : 05 Avr 2017 23:25

Re: [DB - AL] Problème lors de la descente après le saut

Message par Hekinox » 08 Mai 2017 19:45

Merci, je vais regarder...

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [DB - AL] Problème lors de la descente après le saut

Message par Greg » 08 Mai 2017 21:09

Je ne suis pas spé dans les animations de personnage avec ossature donc je peux me tromper.
Mais à part ajout de nouveaux outils à la maj 5.5, il me semble qu'il était plus sage de gérer ses animations et la physique indépendamment...

Pour ce faire, il faut que le centre de l'objet lors des animations soit toujours basé sur la même coordonnées x,y,z.
Lors d'un saut, il faut animer le personnage mais ne pas le déplacer en 'hauteur' (sur l'axe y).

Ensuite dans FixedUpdate lors du saut faire un truc dans le style :
player.GetComponent<RigidBody>().AddForce(new Vector3(0, 100, 0), ForceMode.Impulse);

J'espère que ça t'aidera. ^^
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Hekinox
Messages : 12
Inscription : 05 Avr 2017 23:25

Re: [DB - AL] Problème lors de la descente après le saut

Message par Hekinox » 08 Mai 2017 21:28

Toujours pareil... Mais merci pour ta réponse !

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [DB - AL] Problème lors de la descente après le saut

Message par Greg » 09 Mai 2017 08:32

Tu peux vérifier que le angular drag (frottement) du rigidbody est bien à 0.05... ou essayer d'augmenter sa masse.
Tu peux essayer de désactiver le collider pendant le test pour voir si ça vient de là...
Sinon, tu peux aussi ouvrir l'onglet stats pendant test (en haut à droite de la fenêtre de Game de l'éditor à coter de 'Mute Audio') et vérifier que ton fps tombe pas à 2 pendant saut...
Et sinon je vois pas trop, vérifie ta gravité dans les options de ton project, ton physique matérial (si il est vide, celui par défault du project est appliqué).
Menu > Edit > Project Settings > Physics
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Verrouillé

Revenir vers « (C#) CSharp »