[RESOLU][DB-AL]Velocity et angle

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
hercull
Messages : 34
Inscription : 20 Août 2017 00:58

[RESOLU][DB-AL]Velocity et angle

Message par hercull » 01 Mai 2018 12:17

Salut à tous!

J'ai mon personnage 2D qui tourne sur lui même a 360 degrés sur l'axe z lorsque que l'on click sur lui, voici le code qui me permet de faire ça:

Code : Tout sélectionner

transform.Rotate(Vector3.back,  400 * Time.deltaTime);
J'aimerai ensuite lorsque l'on relâche le click que mon personnage fonce dans la direction ou il était lors de relâchement du clic.
et que la force sois naturel(que le personnage retombe une fois qu'il n'y a plus de force comme avec la gravité).

je récupère la rotation de mon personnage sur l'axe z avec ce code:

Code : Tout sélectionner

transform.eulerAngles.z
J'ai essayer avec velocity car avec addforce la force appliqué et continuelle et ce n'est pas ce que je veux.

Code : Tout sélectionner

rb.velocity = new vector3(0, 0, transform.eulerAngles.z);
Merci de votre aide
Dernière édition par hercull le 01 Mai 2018 23:34, édité 1 fois.

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

Re: [DB-AL] Velocity et angle

Message par Max » 01 Mai 2018 13:44

Bonjour,

tu as une rotation autour de Z, perso d'instinct je partirais sur un truc du genre:

Code : Tout sélectionner

            Vector3 dir = transform.up;
            rb.AddForce(dir * power);
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

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL]Velocity et angle

Message par hercull » 01 Mai 2018 15:07

Cela ne fonctionne pas je ne vois aucun saut.

D'autres idées?

Besoin de voir tout mon code?

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

Re: [DB-AL]Velocity et angle

Message par Max » 01 Mai 2018 15:24

hercull a écrit :
01 Mai 2018 15:07
Cela ne fonctionne pas je ne vois aucun saut.
J'ai donné le transform.up en révérenciel de direction, mais pas sur que cela soit le bon dans ton cas, à toi de tester. Idem pour la valeur power. T'as mis combien ? Si tu as mis 1.0f, sûr que tu ne verras rien .
Après, il te faut bien un rigidbody non Kinematic sur ton objet.
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

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL]Velocity et angle

Message par hercull » 01 Mai 2018 15:45

ma force est a 100.
rb non kinematic.

Code : Tout sélectionner

  public Rigidbody2D rb;
    public float force; 

    void Start () {
        rb = GetComponent<Rigidbody2D> ();
        rb.constraints =  RigidbodyConstraints2D.FreezePositionY;
        rb.constraints =  RigidbodyConstraints2D.FreezePositionX;


    }  

    void Update () {
        if (Input.GetMouseButton (0)) {
            OnMouseDown ();
        }   
  }

    void FixedUpdate(){
        if (Input.GetMouseButtonUp(0) && btnClicked) {
            Debug.Log ("OnMouseLeave ()");
            OnMouseLeave ();
        }
    } 

    IEnumerator Rotate(float duration)
    {
        transform.Rotate(Vector3.back, 400 * Time.deltaTime);
        btnClicked = true;
                yield return null;
    } 

    IEnumerator Jump()
    {
        rb.constraints = RigidbodyConstraints2D.None;
        Debug.Log ("transform.eulerAngles.z :" + transform.eulerAngles.z);
        Vector3 dir = transform.up;
        rb.AddForce(dir * force);  
        yield return null;
    } 

    public void OnMouseDown() {
        StartCoroutine(this.Rotate(30f));
    }

    public void OnMouseLeave() {
        StartCoroutine(Jump());
    }
 

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

Re: [DB-AL]Velocity et angle

Message par Max » 01 Mai 2018 16:17

Arf, tu es en 2D, j'avais pas capté.
Sinon, houlà. Pourquoi ces coroutines ?

autre chose, quand tu fais

Code : Tout sélectionner

        rb.constraints =  RigidbodyConstraints2D.FreezePositionY;
        rb.constraints =  RigidbodyConstraints2D.FreezePositionX;
en final, seul l'axe X est concerné. Si tu veux bloquer les deux axes, Il te faut écrire

Code : Tout sélectionner

rb.constraints = RigidbodyConstraints2D.FreezePosition;
En suite, à ma connaissance, il n'existe pas de callback OnMouseLeave ( tu as trouvé ça dans la doc ?), donc c'est une fonction qui ne sera jamais appelée (donc jamais de Jump).

Tout en gardant ton code comme base, essais ceci (force plutôt vers les 1000.0f):

Code : Tout sélectionner

    public Rigidbody2D rb;
    public float force = 1000.0f;
    bool btnClicked;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        rb.constraints = RigidbodyConstraints2D.FreezePosition;
    }

    public void OnMouseDrag()
    {
        Rotate(30f);
    }

    public void OnMouseUp()
    {
        if (btnClicked)
        {
            Jump();
        }
    }

    void Rotate(float duration)
    {
        transform.Rotate(Vector3.back, 400 * Time.deltaTime);
        btnClicked = true;
    }

    void Jump()
    {
        rb.constraints = RigidbodyConstraints2D.None;
        Vector3 dir = transform.up;
        rb.AddForce(dir * force);
        btnClicked = false;
    }
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

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL]Velocity et angle

Message par hercull » 01 Mai 2018 17:43

Super sa fonctionne merci ;)

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL]Velocity et angle

Message par hercull » 01 Mai 2018 18:26

J'ai un autre problème.

Ma camera suis bien mon player mais elle suis la rotation également.

Comment faire pour qu'elle ne suive pas la rotation?

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

Re: [DB-AL]Velocity et angle

Message par Max » 01 Mai 2018 21:00

hercull a écrit :
01 Mai 2018 18:26
Ma camera suis bien mon player mais elle suis la rotation également.
ta camera est parente de ton player j'imagine. Dans ce cas, je la mettrait indépendante avec un script de suivit du player (et ne concernant donc que le positionnement).
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

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL]Velocity et angle

Message par hercull » 01 Mai 2018 23:33

Nikel! merci

Répondre

Revenir vers « (C#) CSharp »