Mon premier jeu 2D

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
4Roues93
Messages : 9
Inscription : 02 Sep 2017 21:52

Mon premier jeu 2D

Message par 4Roues93 » 29 Jan 2021 15:35

Bonjour,

Qui pourrait m'aider avec le code de mon personnage 2D ? j'ai un souci avec le saut.

Quand mon perso saute en courant le personnage bascule en avant ou arrière quand il touche le sol... Pourquoi ?

voici le code :

Code : Tout sélectionner

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

public class déplacement : MonoBehaviour {

    public GameObject perso;
    public Animator animPerso;
    public float vitesse = 4.0f;
    public float vitesseSautAvant = 1.0f;
    public Rigidbody2D RB;
    

    void Start () {

        animPerso = this.GetComponent<Animator>();
        RB = this.GetComponent<Rigidbody2D>();
    }
	
	void Update () {

        Deplacement();
    }

    void Deplacement()
    {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            animPerso.Play("marche");
            RB.transform.Translate(Vector2.right * vitesse * Time.deltaTime);
            RB.transform.localScale = new Vector3(2, 2, 1);

            if (Input.GetKey(KeyCode.Space))
            {
                animPerso.Play("saut");
                RB.transform.Translate(Vector2.up * vitesse * Time.deltaTime);
                RB.AddForce(new Vector2(RB.velocity.x + vitesseSautAvant, RB.velocity.y + 2));
            }
        }

        else if (Input.GetKey(KeyCode.LeftArrow))
        {
            animPerso.Play("marche");
            RB.transform.Translate(Vector2.left * vitesse * Time.deltaTime);
            RB.transform.localScale = new Vector3(-2, 2, 1);

            if (Input.GetKey(KeyCode.Space))
            {
                animPerso.Play("saut");
                RB.transform.Translate(Vector2.up * vitesse * Time.deltaTime);
                RB.AddForce(new Vector2(RB.velocity.x + vitesseSautAvant, RB.velocity.y + 1));
            }
        }

        else if (Input.GetKey(KeyCode.Space))
        {
            RB.transform.Translate(Vector2.up * 4 * Time.deltaTime);
            animPerso.Play("saut");
        }
        else if (!Input.GetKeyDown(KeyCode.RightArrow))
        {
            animPerso.Play("perso_fixe");
        }
        else if (!Input.GetKeyDown(KeyCode.LeftArrow))
        {
            animPerso.Play("perso_fixe");
        }
        else
        {
            animPerso.Play("perso_fixe");
        }
    }

}

Fredo_
Messages : 4
Inscription : 28 Jan 2021 11:54

Re: Mon premier jeu 2D

Message par Fredo_ » 29 Jan 2021 16:46

Bonjour,

Utilises des vector3 avec AddForce, et force l'axe z à 0.
D'une manière générale utilises des Vector3 avec z=0, même en 2D, cela évite les surprises par rapport à l'axe z

A+

Répondre

Revenir vers « Scripting »