[DB-AL] Problème de jonction de programme

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
Répondre
Stread91
Messages : 6
Inscription : 28 Oct 2019 18:27

[DB-AL] Problème de jonction de programme

Message par Stread91 » 28 Oct 2019 23:25

Bonjour/Bonsoir à tous. j'ai récemment commencé à utiliser Unity, je suis donc débutant+++ dans la matière.
-J'ai commencé par créé un simple projet d'animation qui faisait monter et descendre une Sphère lorsque je cliqué sur ''1"

https://www.youtube.com/watch?v=gHHq-rUVHQ4

-J'ai ensuite créé un nouveau projet qui lui me permet de déplacer une Sphère grâce à Z/Q/S/D

J'ai donc naturellement eu l'idée de créer un projet réunissant les deux, c'est à dire un mouvement avec Z/Q/S/D et lorsque le "1" est utilisé, l'animation se lance.

Mais c'est ici que ce situe mon problème.

https://www.youtube.com/watch?v=LVi8LJfuPRw

Merci d'avance à ceux ou celles qui pourront me venir en aide !

Ci dessous les programmes :

mouvement sphere : https://gyazo.com/632ec051519105232eadd7ca0d57e816

Animation : https://gyazo.com/8cd00c9ed6da5402ef035a7b3f39c246

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

Re: [DB-AL] Problème de jonction de programme

Message par boubouk50 » 29 Oct 2019 10:06

Bonjour Stread91,

S'il te plait, pour le code, utilise les balises Code prévues à cet effet directement dans le message.
D'après le message d'erreur, l'input key n'a pas de nom: Input key named: is unknown.. Normalement, le nom est affiché. J'en conclus donc que tu n'as pas initialisé inputFront, que la chaîne de caractères est donc vide.
"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

Stread91
Messages : 6
Inscription : 28 Oct 2019 18:27

Re: [DB-AL] Problème de jonction de programme

Message par Stread91 » 29 Oct 2019 11:50

J'ai essayer une autre alternative et cette fois je peux tourner sur moi même (avec Q/D) et faire l'animation mais je ne peux pas avancer, j'ai comme l'impression qu'aucune transform.Translate n'est possible. Le problème vient-il de mon animation ? Qui bloquerai les mouvements ?

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

Re: [DB-AL] Problème de jonction de programme

Message par boubouk50 » 29 Oct 2019 12:02

Alors oui, il faut faire attention à la mise en place des tes éléments:
L'animation modifie les transformations de ton objet (position, rotation et échelle) tout comme toi avec les inputs. Il va donc y avoir conflit.
Ce qu'il faut faire c'est hiérarchiser tout ça. Par exemple, tu peux mettre ta sphère sous un Empty GameObject pour séparer les contrôles > Empty = Input, Sphere = Animation. Ainsi, la sphère est modifiée par l'animation et l'Empty parent est modifié par les Inputs. Il n'y a plus de conflit.
"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

Stread91
Messages : 6
Inscription : 28 Oct 2019 18:27

Re: [DB-AL] Problème de jonction de programme

Message par Stread91 » 29 Oct 2019 12:11

Ahhh ok je comprend mieux, je faisais agir plusieurs chose sur un même objet qui se ''contre dise" .

Bon je vais essayer de comprendre et exécuter ta solution.

Stread91
Messages : 6
Inscription : 28 Oct 2019 18:27

Re: [DB-AL] Problème de jonction de programme

Message par Stread91 » 29 Oct 2019 12:27

Ookkk okkk, ça à l'air de commencer à ressemble à quelque chose.

Mais un autre problème vient d’apparaître, les débuts et fin d'animation sont pas fou mais bon le problème n'est pas là, c'est plutôt le fait que je vole pendant l'animation combiné à la translation xD

https://www.youtube.com/watch?v=JgURdldw7-8

Vous aurez une solution ?

(en tout cas merci de la solution précédente)

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

Re: [DB-AL] Problème de jonction de programme

Message par boubouk50 » 29 Oct 2019 12:40

Si tu codes avec les pieds, je te dirais de remonter le clavier au niveau des mains. ;-)

Si ton objet s'envole, c'est que tu l'as programmé ainsi. Rien n'est fait par hasard.
Si tu veux de l'aide là dessus, balance ton code de déplacement (en entier merci) ici dans des balises code (le 5e bouton du menu d'édition)
"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

Stread91
Messages : 6
Inscription : 28 Oct 2019 18:27

Re: [DB-AL] Problème de jonction de programme

Message par Stread91 » 29 Oct 2019 12:47

Code mouvement :

Code : Tout sélectionner

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

public class CharacterMotor : MonoBehaviour
{
    //ms
    public float walkSpeed;
    public float runSpeed;
    public float turnSpeed;

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

    public Vector3 jumpSpeed;
    CapsuleCollider playerCollider;




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

    }

    void Update()
    {
        //Déplacement
        if (Input.GetKey(inputFront) && !Input.GetKey(KeyCode.LeftShift))
        {
            transform.Translate(0, 0, walkSpeed * Time.deltaTime);
        }

        if (Input.GetKey(inputBack))
        {
            transform.Translate(0, 0, -walkSpeed * Time.deltaTime);
        }

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

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

        //Sprint
        if (Input.GetKey(inputFront) && Input.GetKey(KeyCode.LeftShift))
        {
            transform.Translate(0, 0, runSpeed * Time.deltaTime);
        }
    }
}
Code animation :

Code : Tout sélectionner

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

public class animControl : MonoBehaviour
{

    public Animator anim;

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

    void Update()
    {
        if (Input.GetKey("z"))
        {
            anim.SetBool("up", true);
        }
        else
        {
            anim.SetBool("up", false);
        }
    }
}
Critique comme il se doit, j'ai commencer avant hier et suis donc le plus gros néophyte dans le monde du code.
Ça m'aidera pour les prochaines ;-)

Stread91
Messages : 6
Inscription : 28 Oct 2019 18:27

Re: [DB-AL] Problème de jonction de programme

Message par Stread91 » 29 Oct 2019 13:14

Ok j'ai trouvé une solution. Mais un autre problème est apparu !

Lorsque je fini mon mouvement la sphère augmente de plus en plus sa hauteur :

https://www.youtube.com/watch?v=ZN3usTvBiwQ

J'ai essayer de lui ajouter de la gravité mais elle est attiré trop fort vers le sol ? Possible de diminué la gravité sur cette objet ?

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

Re: [DB-AL] Problème de jonction de programme

Message par boubouk50 » 29 Oct 2019 15:55

Oui alors là ça va pas du tout, ce n'est plus une question de programmation mais de connaissance sur le fonctionnement du contrôle d'un personnage.
Ta sphère possède un rigidbody, tu dois donc utiliser la physique du moteur pour les déplacements. Et cela passe par le rigidbody et non pas par le transform du gameObject.

Avant d'aller plus loin, je te conseille de te renseigner sur le Character Controller. Sur ce forum et sur le net.
Tu peux t'aider de la documentation (manual) pour la théorie sur le rigidbody, des Unity Learn pour les explications et tutos (officiels donc en anglais) et enfin d'exemples. (Dans les StandardAssets d'Uinty Technology, tu as un exemple de Caracter Controller, le First Person Controller.)
Tu peux chercher un peu sur l'Asset Store aussi, tu dois aussi avoir des Controllers gratuits pour fouiller dans le code et le Setup du rigidbody.
"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

Répondre

Revenir vers « (C#) CSharp »