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!
[RESOLU][DB] Rotation player avec un joystick Mobile
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
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
Re: [DB] Rotation player avec un joystick Mobile
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).
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).
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
Re: [DB] Rotation player avec un joystick Mobile
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;
}
}
Re: [DB] Rotation player avec un joystick Mobile
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:
A tester.
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);
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
Re: [DB] Rotation player avec un joystick Mobile
C'est bon j'ai trouver, mon souci venais de la position
//avec erreur
//sans l'erreur
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!
//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);
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);
(erreur de ma part)
Merci quand même pour la formule plus simple d'utilisation!