[RESOLU][DB] Rotation player avec un joystick Mobile

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
Fen
Messages : 4
Inscription : 03 Sep 2018 17:38

[RESOLU][DB] Rotation player avec un joystick Mobile

Message par Fen » 14 Sep 2018 16:40

Bonjour, j'ai un souci je souhaite créer un jeu mobile 2d (déplacement comme Agar.io mobile), j'ai donc un joystick pour le déplacement, mon personnage bouge sans aucun souci, sauf que j'aimerais que mon personnage fasse une rotation pour que le canon soit dans le sens où le personnage avance.

j'ai pris un screen de mon code, le problème avec ce code c'est que c'est l'axe de rotation Y qui bouge et non le Z
J'ai utilisé https://docs.unity3d.com/ScriptReferenc ... ation.html

Merci de votre aide par avance!

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

Re: [DB] Rotation player avec un joystick Mobile

Message par Max » 14 Sep 2018 18:05

Bonjour,

Pour y voir plus clair, voir ton code serait un bon début. Tu parles d'un screen, mais tu ne sembles pas l'avoir posté.
Et si tu souhaites poster un code, fait le directement ici, encadré par les balises 'code' du forum (en cas de doute, procédure à consulter dans la Netiquette).
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

Fen
Messages : 4
Inscription : 03 Sep 2018 17:38

Re: [DB] Rotation player avec un joystick Mobile

Message par Fen » 14 Sep 2018 22:35

Code : Tout sélectionner

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

public class Deplacement : MonoBehaviour
{

    protected Joystick joystick;
    protected joybutton joybutton;
    public float speed;
    public Transform player;

    void Start()
    {
        joystick = FindObjectOfType<Joystick>();
        joybutton = FindObjectOfType<joybutton>();
    }

    void Update()
    {
        var rigidbody = GetComponent<Rigidbody>();
        //Déplacement du personne via le joystick
        rigidbody.velocity = new Vector3(joystick.Horizontal * speed, joystick.Vertical * speed, 0);

        //
        Vector3 targetDirection = new Vector3(joystick.handle.position.x, 0f, joystick.handle.position.y);
        Quaternion targetRotation = Quaternion.LookRotation(targetDirection);
        player.transform.rotation = targetRotation;
    }
}
C'est vrai je pensais l'avoir mis! Désoler

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

Re: [DB] Rotation player avec un joystick Mobile

Message par Max » 15 Sep 2018 17:17

Hello,

Perso je ne suis pas du tout spécialiste en 2D. Passer par le Quaternions.LookAt pour ça, je ne suis pas certains que cela soit la meilleurs des approches.
Perso, je partirais sur un truc du genre:

Code : Tout sélectionner

        float rz = Mathf.Atan2(y, x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(0f, 0f, rz);
A tester.
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

Fen
Messages : 4
Inscription : 03 Sep 2018 17:38

Re: [DB] Rotation player avec un joystick Mobile

Message par Fen » 17 Sep 2018 15:30

C'est bon j'ai trouver, mon souci venais de la position

//avec erreur

Code : Tout sélectionner

float angle = Mathf.Atan2(joystick.handle.position.y, joystick.handle.position.x);
        player.transform.rotation = Quaternion.Euler(0f, 0f, angle * Mathf.Rad2Deg);
//sans l'erreur

Code : Tout sélectionner

float angle = Mathf.Atan2(joystick.handle.anchoredPosition.y, joystick.handle.anchoredPosition.x);
        player.transform.rotation = Quaternion.Euler(0f, 0f, angle * Mathf.Rad2Deg);
J'ai pas regarder correctement le code que le pack de joystick que j'avais pris de l'asset store.
(erreur de ma part)

Merci quand même pour la formule plus simple d'utilisation!

Répondre

Revenir vers « (C#) CSharp »