[RESOLU] Runner à étage

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
bloodfang
Messages : 10
Inscription : 09 Août 2019 13:27

[RESOLU] Runner à étage

Message par bloodfang » 10 Août 2019 16:01

Bonjour,

Je débute sur Unity, j'aimerai crée un mini jeu où le personnage court tout seul et on tape sur l'écran pour sauter.
Jusque là j'ai réussis à faire un personnage qui avance, la camera le suis, et il saute quand on lui demande.

C'est pas mal le soucis c'est que je peux créer le design sur qu'une seule ligne c'est à dire que quand je veux faire monter mon perso sur une montée, il ralenti, recule, la camera ne monte pas vers le haut. Pareil si je veux le faire descendre la camera ne suit pas.

Tout se que j'ai pu trouvé sur google jusqu'à présent c'est des jeu comme là où j'en suis c'est à dire un personnage qui progresse sur une seule ligne(au pire le faire sauter sur une plateforme plus haute mais la camera reste au même point).

Bref je suis un peux bloqué car j'aimerai bien rajouter un peux plus de contenu qu'une seule ligne à mon jeu. Donc je voudrais savoir si c'est possible de faire ca, et comment m'y prendre pour orienter mes recherches parce que là je bloque.

Merci à vous :)
Dernière édition par bloodfang le 11 Août 2019 13:23, édité 1 fois.

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

Re: Runner à étage

Message par Max » 10 Août 2019 16:11

Salut,

Techniquement il faudrait quelques éléments d'informations supplémentaires. Un screen en situation serait par exemple intéressant (je n'ai pas su voir si tu était en 2D ou 3D). Fournir aussi quel genre de contrôleur tu utilises pour gérer ton personnage.
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

Avatar de l’utilisateur
bloodfang
Messages : 10
Inscription : 09 Août 2019 13:27

Re: Runner à étage

Message par bloodfang » 10 Août 2019 16:29

Alors oui le jeu est en 2D, et "genre de controle" je vois pas trop ce que tu peux dire.

Juste il saute quand on clic comme ca:

Code : Tout sélectionner

        void Update()
    {
        if (Input.GetMouseButtonDown(0) && isGrounded)
        {
            Jump();
        }
    }
    void Jump()
    {
        rb.velocity += new Vector2(0, maxjump);
    }
        }
Avec la variable maxjump que je peux modifier via l'interface d'Unity. Et ensuite il avance tout seul via un SetVelocity.

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

Re: Runner à étage

Message par Max » 10 Août 2019 17:16

ton personnage est visiblement basé sur un système Collider2D/RigidBody2D.
Le soucis, si j'ai bien suivit, est que la vitesse fluctue en fonction des éléments rencontrés, genre il ralentit dans les monté et va plus vite dans les descente ?
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

Avatar de l’utilisateur
bloodfang
Messages : 10
Inscription : 09 Août 2019 13:27

Re: Runner à étage

Message par bloodfang » 10 Août 2019 17:27

Oui c'est ca il monte même pas du tout à moins de faire une légère pente. Et dans les descentes oui ca accélère et la cam ne suit pas elle reste au même niveau, mais ca à la limite avec quelque recherche je devrais pouvoir trouver si déjà j'arrive à faire une map sur niveau.

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

Re: Runner à étage

Message par Max » 10 Août 2019 18:09

Ton personnage utilise les propriété physique d'Unity, et est soumis à une vélocité constante à priori, donc pour schématiser une poussé constante. De fait, quand ça monte, il en bave plus (le pauvre), et va donc moins vite.
Niveau code, comment est gérée l'avance de ton player ?
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

Avatar de l’utilisateur
bloodfang
Messages : 10
Inscription : 09 Août 2019 13:27

Re: Runner à étage

Message par bloodfang » 10 Août 2019 18:22

Niveau code ca donne à peux pret ca :

Code : Tout sélectionner

public Rigidbody2D rb;
public float vitesse;
void Start()
    {
        SetVelocity(vitesse, 0);
        

    }
    void SetVelocity(float xVelocity, float yVelocity)
    {
        rb.velocity = new Vector2(0, 0);
        rb.velocity += new Vector2(xVelocity, yVelocity);
    }
Normalement c'est avec ca qu'il bouge, ensuite via l'interface je regle la vitesse et j'ajoute le Rigidbody 2D sur la variable Rb.

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

Re: Runner à étage

Message par Max » 10 Août 2019 20:36

Dans le code, je ne vois pas trop l'interet des deux lignes

Code : Tout sélectionner

        rb.velocity = new Vector2(0, 0);
        rb.velocity += new Vector2(xVelocity, yVelocity);
 
pourquoi ne pas écrire simplement dans ce cas ?

Code : Tout sélectionner

        rb.velocity = new Vector2(xVelocity, yVelocity);
 
Sinon, sur le principe effectivement tu auras des soucis de rythme dès qu'il y aura des changements d'inclinaison.
Perso, je ne suis pas spécialiste de ce genre de jeu en 2D, mais j'aurais tendance à partir plutôt sur un truc du genre:
(après il doit y avoir d'autres solutions)

Code : Tout sélectionner

void FixedUpdate()
{
    .....
        rb.AddForce(Vector2.right  * speed);
        // limitation de la vélocité à maxSpeed...
        if (Mathf.Abs(rb.velocity.x) > maxSpeed)
        {
            rb.velocity = new Vector2(Mathf.Sign(rb.velocity.x) * maxSpeed, rb.velocity.y);
        }
        ....
}
PS: je déplace le sujet dans la section script.
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

Avatar de l’utilisateur
bloodfang
Messages : 10
Inscription : 09 Août 2019 13:27

Re: Runner à étage

Message par bloodfang » 10 Août 2019 21:12

Ok merci de ta réponse effectivement ton code est plus court et fonctionne tout aussi bien.

Pour ce qui est du second, je viens d'essayer mais ca ne fonctionne pas, surement quelque chose que j'ai du mal faire. Je me retrouve maintenant avec 3 variables modifiable dans l'interface au niveau de l'objet de mon Personnage(Vitesse, max speed, seep (x et y).

Surement une de trop, et j'ai instancié par rapport à ton code les variables suivantes "maxSpeed" avec un public float, et "speed" avec un public vector2.

Mais cela dit y'a du progrès mon personnage monte beaucoup plus haut qu'au paravent même si il ralenti toujours et fini par reculer je vois déjà une légère amélioration ^^.

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

Re: Runner à étage

Message par Max » 11 Août 2019 10:20

Bonjour,

Difficile de savoir sans le script. Poste le script complet qui permet la gestion de ton player.
Là je pense qu'on y verra plus clair.
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 »