Position & Mouvement

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
T0ry
Messages : 4
Inscription : 21 Mai 2021 21:21

Position & Mouvement

Message par T0ry » 22 Mai 2021 18:53

Bonsoir,
je suis en ce moment entrain de réaliser un jeu platfromer basé sur cette série de vidéo :
https://youtube.com/playlist?list=PLPV2 ... gWEz6EvVi6

Seulement, je souhaite définir 5 positions ( 5 chemins ) dans lesquels le joueur pourra ce déplacer. ( je ne sais pas comment faire, je suis perdu )

Ensuite, j'aimerais que le joueur ce déplace de gauche à droite seulement en faisant des Dash ( J'ai testé plusieurs ligne de code, sans réussir ).

C'est premier jeu que je réalise sur Unity.
Merci, d'avance pour toutes les réponses :super: :amen:

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Position & Mouvement

Message par jmhoubre » 22 Mai 2021 20:53

Bonsoir,

un peu comme une voiture sur une route à 5 voies ? Si oui, tu fixes la coordonnée ad hoc, et quand tu bouges sur cet axe, tu incrémentes ou tu décrémentes cette coordonnée.
Supposons que tes 5 voies soient parallèles, de 2 unités de large, et orientées selon l'axe des X. Ton joueur au ra pour coordonnées :
  • x sera déterminée par la voie utilisée : voie 1 (x=1), voie 2 (x = 3), voie v, pour v de 1 à 5 (x = 2 * v + 1).
  • y sera la hauteur, fixée à 0 ici (terrain plat)
  • z sera déterminée par la vitesse du joueur et le temps passé. A chaque frame, le déplacement sera de Time.deltaTime * speed.
Quand ton joueur se déplace à droite (on utilisera GetKeyDown () plutôt que GetKey () ), tu incrémentes v de 1, à gauche tu décrémentes de 1, et tu vérifies que v reste entre 1 et 5 (utilise Mathf.Clamp ()).

Ne sachant pas ce qu'est un Dash (à part de la lessive et une crypto monnaie), je ne peux pas répondre pour le reste.

T0ry
Messages : 4
Inscription : 21 Mai 2021 21:21

Re: Position & Mouvement

Message par T0ry » 22 Mai 2021 21:43

Oui ! Ce que tu as dit c'est exactement ce que je veux faire, mais je viens tout juste de commencer unity3d et le codage donc je serai pas vraiment refaire ce que tu m'a dit :

Code : Tout sélectionner

public Rigidbody rb;

    public float forwardForce = 2000f;
    public float sidewaysForce = 500f;

    // Update is called once per frame
    void FixedUpdate ()
    {
        rb.AddForce(0, 0, forwardForce * Time.deltaTime);

        if ( Input.GetKey("d") )
        {
            rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0);
        }
        
        if (Input.GetKey("q"))
        {
            rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0);
        }
    }
Voici le code, que j'ai fais pour faire les mouvement de mon personnage.
 ! Message de : boubouk50
Utilise les balises CODE pour encapsuler ton code stp. 5e bouton matérialisé par les chevrons <>

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Position & Mouvement

Message par jmhoubre » 22 Mai 2021 22:58

Déjà, sur le forum, on publie le code avec les balises qui vont bien. Au-dessus de la zone dans laquelle tu tapes, il y a des boutons de mise en forme comme "B" pour le gras, etc...
Le 5ème bouton te donne les balises pour mettre en forme du code :

Code : Tout sélectionner

public Rigidbody rb;
public float forwardForce = 2000f;
public float sidewaysForce = 500f;
Ensuite, on ne laisse pas des tas de lignes vides dans le code publié. C'est inutile, cela oblige à scroller le code s'il est long, de revenir en arrière, bref, agaçant.

Ensuite, surtout quand on débute, on publie tout le script : on peut ainsi vérifier que tu as bien tous les using nécessaires, etc... Le plus simple : tu vas dans ton éditeur de code, Ctrl+A (tout sélectionner), Ctrl+C (copier), tu reviens sur le forum, tu insères les balises de code, Ctrl+V (coller). Ainsi tu auras un code bien présenté avec l'indentation et tout ce qu'il faut.

C'est pas mal aussi de se présenter sur la partie réservée à cet effet. C'est intéressant de savoir à quel profil on a affaire, afin d'adapter les explications :
- passionné de 10 ans ?
- programmeur chevronné en PHP découvrant le C# et Unity ?

C'est une très mauvaise idée, pour un débutant, de se lancer tête baissée dans la programmation sans expérience. Tu risques de te décourager, de prendre des mauvaises habitudes. Parfois même, tu auras un truc horrible qui fonctionnera :)
Je te conseille donc les tutos, et de petits codes pour expérimenter ce que tu vois, afin d’apprendre, de retenir et de mettre en pratique. On ne commence pas le développé-couché avec des haltères de 300 kilos...
La-aussi, le forum va t'aider : nous avons un sujet qui liste des ressources francophones (un peu) et anglophones : le salut est ici. Il y a des tutos pour le code, des projets, des points particuliers.... Bonne lecture.

T0ry
Messages : 4
Inscription : 21 Mai 2021 21:21

Créer des zones de déplacement

Message par T0ry » 24 Mai 2021 17:52

Bonjour, je suis débutant sur unity3d, je commence un projet scolaire, dans le quel il faut créer un jeu. J'ai donc décidé de créer un runner ( dans le style de SubwaySurfer mais avec des cubes ).

Je souhaite que mon joueur se déplace seulement sur 5 chemins ( à la manière de subwaysurfer, qui se déplace sur 3 chemins ).

Mais je n'arrive pas à coder cette partie. J'ai tout essayé, j'ai regardé un tas de tutos ( https://youtube.com/playlist?list=PLUWx ... 2DH1g2hrgS surtout lui ), j'ai lu plein d'article, mais impossible de trouver une solution.

Vous pouvez m'aider svp :amen: :amen: :pleur4:


PS : https://youtube.com/playlist?list=PLPV2 ... gWEz6EvVi6 Je m'inspire de ce tuto pour créer mon Jeu.

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

Re: Position & Mouvement

Message par Max » 24 Mai 2021 18:22

Bonsoir,

jmhoubre t'a fournis les bonnes pistes plus haut.
Maintenant, je pense qu'il faut que tu commences par des choses simples dans un premier temps. A commencer par des déplacements basiques. Et laisse de coté la physique pour le moment. Travaille pour l'instant que sur les transforms.
Commence par le déplacement d'un cube sur l'axe des Z, avec un axe X fixe, et une hauteur constante (axe des Y).
C'est une première étape.
Une fois cette partie réalisée, tu pourras alors aborder la partie suivante, qui donnera la possibilité de changer sur demande la trajectoire sur l'axe des X.
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

T0ry
Messages : 4
Inscription : 21 Mai 2021 21:21

Re: Position & Mouvement

Message par T0ry » 24 Mai 2021 19:24

Merci, pour vos réponses je pense y être presque :

Code : Tout sélectionner

public class PlayerMouvement : MonoBehaviour
{
    public Rigidbody rb;

    public float forwardForce = 2000f;
    public float sidewaysForce = 500f;

    void Start()
    {
        transform.position = new Vector3(1, 0, 0);
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        rb.AddForce(0, 0, forwardForce * Time.deltaTime);

        if (Input.GetKeyDown(KeyCode.D))
        {
            transform.position = transform.position + new Vector3(50 * Time.deltaTime, 0, 0);
        }

        if (Input.GetKey(KeyCode.Q))
        {
            rb.AddForce(-500 * Time.deltaTime, 0, 0);
        }
    }

}

Mon personne divague un peu, et les déplacement ne sont pas comme je veux qu'ils soient, mais je pense être sur la bonne voie.
Dites moi si je suis sur la bonne route.
Je vais continuer de regarder des tutos et lire des articles, je vous tiens au courant...

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

Re: Position & Mouvement

Message par Max » 25 Mai 2021 17:07

Bonjour,

Tu mélanges un peu instructions physiques et transformations. Et pourquoi un GetKeyDown d'un coté et un simple GetKey de l'autre ? Et d'un coté tu fais appel à la physique, de l'autre tu passes par le transform.
il y a pas mal de choses qui ne vont pas dans ton code.
Comme conseillé plus haut, laisse de coté pour le moment la partie physique. Essais déjà de travailler dans un premier temps simplement sur les transforms (avec par exemple des instructions comme Translate , etc...). La doc est ton ami, n'hésite pas à la consulter.
Avec donc un translate sur l'axe des Z pour l'avancée de ton éléments, et des changements de trajectoires sur les X avec aussi un Translate à chaque fois, dont la valeur du delta serait accessible depuis l'inspecteur.
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 »