Problème de perso/manette
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: Problème de perso/manette
Effectivement j'ai peut etre fait ca sans faire expres et je comprend pourquoi ca ne marche pas du coup, mais comment regler le probleme alors car je ne sais pas lesquels j'ai supprimé
Re: Problème de perso/manette
C'est simple. Quand tu es sur l'InputManager, en haut à droite tu as une petite roue dentée. Clik dessus, et là tu fais 'reset'. Les paramètres par défaut seront donc de nouveau présent.
Et après, tu ajoutes tes inputs à toi, en changeant le size (qui est par défaut à 18).
Et après, tu ajoutes tes inputs à toi, en changeant le size (qui est par défaut à 18).
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: Problème de perso/manette
Ok c'est bon mes problèmes sont résolus, mes boutons refonctionnes et mes personnage se déplace correctement !
Maintenant le problème du tout début était comment orienter la vu de mon perso selon l'emplacement de mon joystick de droite, a tu une idée ? (en sachant que je ne suis pas très doué encore donc plus ca sera précis plus je comprendrai )
Merci.
Maintenant le problème du tout début était comment orienter la vu de mon perso selon l'emplacement de mon joystick de droite, a tu une idée ? (en sachant que je ne suis pas très doué encore donc plus ca sera précis plus je comprendrai )
Merci.
Problème direction personnage manette c#
Bonjour,
Mon problèmes est que je n'arrive pas a déplacer mon perso manette comme je le veux. Je voudrais qu'il se déplace un peu comme un perso fifa, c'est a dire joystick de gauche pour le déplacement et celui de droite pour changer la direction du regard du perso.
Pour l'instant juste pour le déplacement j'ai codé ca :
Je tiens à préciser que je suis un débutant en code c# et sur unity en général.
Merci.
Mon problèmes est que je n'arrive pas a déplacer mon perso manette comme je le veux. Je voudrais qu'il se déplace un peu comme un perso fifa, c'est a dire joystick de gauche pour le déplacement et celui de droite pour changer la direction du regard du perso.
Pour l'instant juste pour le déplacement j'ai codé ca :
Code : Tout sélectionner
using System.Collections;
using UnityEngine;
public class DeplacementManette : MonoBehaviour {
// Update is called once per frame
void Update () {
//Déplacement
transform.Translate(Vector3.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime);
transform.Translate(Vector3.right * Input.GetAxis("LeftJoystickY") * 500 * Time.deltaTime);
}
}
Je tiens à préciser que je suis un débutant en code c# et sur unity en général.
Merci.
Re: Problème direction personnage manette c#
Hello,
Mmm, impression de déjà-vu ça ne serait pas la suite de ce topic ?
Bref.
Sur fifa il me semble qu'il s'agit d'une vue orbitale (qui focus le joueur tout en tournant autour).
Du coup, il faut que tu créées un empty game object Pivot à l'endroit de l'objet à focus, puis tu lui rattaches la camera et tu lui mets un script de gestion de la rotation :
Et le tour est joué !
Mmm, impression de déjà-vu ça ne serait pas la suite de ce topic ?
Bref.
Sur fifa il me semble qu'il s'agit d'une vue orbitale (qui focus le joueur tout en tournant autour).
Du coup, il faut que tu créées un empty game object Pivot à l'endroit de l'objet à focus, puis tu lui rattaches la camera et tu lui mets un script de gestion de la rotation :
Code : Tout sélectionner
public Camera camera;
void Update(){
camera.transform.LookAt(transform);
float speed = 10.0f;
transform.Rotate(Vector3.up, Input.GetAxis("RightJoystickX") * speed);
transform.Rotate(Vector3.left, Input.GetAxis("RightJoystickY") * speed);
}
}
Re: Problème direction personnage manette c#
Je pense avoir raté quelque chose car mon perso a un comportement très étrange (il fait des tours sur lui meme et autres choses étrange). Je pense avoir été mal compris Je veux que la direction dans laquel mon perso regarde sois dirigé avec mon joystick de droite, mais je ne veux pas que la camera du jeu bouge ! La camera du jeu reste statique sur la scene. Voila ce que j'ai fait pour l'instant :
Effectivement j'ai reposé ma question car l'autre personne m'avait oublié je crois
Code : Tout sélectionner
using System.Collections;
using UnityEngine;
public class DeplacementManette : MonoBehaviour {
public Camera camera;
// Update is called once per frame
void Update () {
//Déplacement
transform.Translate(Vector3.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime);
transform.Translate(Vector3.right * Input.GetAxis("LeftJoystickY") * 500 * Time.deltaTime);
camera.transform.LookAt(transform);
float speed = 10.0f;
transform.Rotate(Vector3.up, Input.GetAxis("RightJoystickX") * speed);
transform.Rotate(Vector3.left, Input.GetAxis("RightJoystickY") * speed);
}
}
Effectivement j'ai reposé ma question car l'autre personne m'avait oublié je crois
Re: Problème de perso/manette
Re,
Ok, si c'est seulement la rotation du perso qui t'intéresse c'est beaucoup plus simple !
Mais essaye de comprendre ce qu'on t'envoie avant de le rajouter dans ton code, parce que je vois que tu as rajouté le "camera.transform.LookAt" alors que tu dis toi-même que tu ne veux pas toucher à la camera....
Pour répondre à ta question, il faut que sur le script de ton perso tu colles quelque chose comme ça :
Après il y a plusieurs possibilités ! Je te conseille de jeter un oeil sur les méthodes de rotation de Unity.
Bon courage !
Ok, si c'est seulement la rotation du perso qui t'intéresse c'est beaucoup plus simple !
Mais essaye de comprendre ce qu'on t'envoie avant de le rajouter dans ton code, parce que je vois que tu as rajouté le "camera.transform.LookAt" alors que tu dis toi-même que tu ne veux pas toucher à la camera....
Pour répondre à ta question, il faut que sur le script de ton perso tu colles quelque chose comme ça :
Code : Tout sélectionner
var input = new Vector3(Input.GetAxis("RightJoystickX"), 0, Input.GetAxis("RightJoystickY"));
if(input != Vector3.zero)
{
transform.forward = input;
}
Bon courage !
Re: Problème de perso/manette
Merci encore car ca marche, j'essaye de comprendre en fait mais c'est assez difficile pour moi pour l'instant..
Je me rend compte que j'ai un autre problème de mouvement.. En fait mon perso quand il est de dos par rapport a la camera et bien il se déplace normalement, mais si il est face a la camera il se déplace comme si la camera etait encore dans son dos donc si mon joystick va vers la gauche le personnage ira vers la droite et inversement. C'est assez embetant car en fonction de si mon personnage tourne le dos ou pas a la camera les touches s'inversent, et c'est impossible a le controller(idem avec mon perso qui se controlle a la souris). J'aimerai vraiment que mon perso se déplace a la maniere de fifa, il regarde dans la direction de mon joystick droit, et se déplace avec le joystick gauche sans prendre en compte la direction de mon joystick droit. Je n'ai aucune idée de la difficulté pour réaliser ces deux codes (souris + manette) mais tant que je ne les ai pas, et bien mon jeu n'avance pas beaucoup. Pour l'instant mes codes sont ceux ci.
Manette :
Souris :
Merci de l'aide.
Je me rend compte que j'ai un autre problème de mouvement.. En fait mon perso quand il est de dos par rapport a la camera et bien il se déplace normalement, mais si il est face a la camera il se déplace comme si la camera etait encore dans son dos donc si mon joystick va vers la gauche le personnage ira vers la droite et inversement. C'est assez embetant car en fonction de si mon personnage tourne le dos ou pas a la camera les touches s'inversent, et c'est impossible a le controller(idem avec mon perso qui se controlle a la souris). J'aimerai vraiment que mon perso se déplace a la maniere de fifa, il regarde dans la direction de mon joystick droit, et se déplace avec le joystick gauche sans prendre en compte la direction de mon joystick droit. Je n'ai aucune idée de la difficulté pour réaliser ces deux codes (souris + manette) mais tant que je ne les ai pas, et bien mon jeu n'avance pas beaucoup. Pour l'instant mes codes sont ceux ci.
Manette :
Code : Tout sélectionner
using System.Collections;
using UnityEngine;
public class DeplacementManette : MonoBehaviour {
// Update is called once per frame
void Update () {
//Déplacement
transform.Translate(Vector3.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime);
transform.Translate(Vector3.right * Input.GetAxis("LeftJoystickY") * 500 * Time.deltaTime);
var input = new Vector3(Input.GetAxis("RightJoystickX"), 0, Input.GetAxis("RightJoystickY"));
if (input != Vector3.zero)
{
transform.forward = input;
}
}
}
Code : Tout sélectionner
using UnityEngine;
public class PlayerBase : MonoBehaviour
{
// INSPECTOR DATA
[SerializeField]
private float Speed = 1.0f; // Vitesse de déplacement
[SerializeField]
private float distStop = 2.0f;
// PRIVATE DATA
private RaycastHit hit;
private Ray ray;
private int mask; // mask pour que seul le sol soit pris en compte lors du raycast
// Use this for initialization
void Start()
{
mask = 1 << 8;
}
// Update is called once per frame
void Update()
{
// picking sur le sol par raycast pour déterminer le point désigné
// par la souris
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask))
{ // si on est bien sur le sol, alors on oriente le player vers ce point
transform.LookAt(hit.point);
}
// si on ne se trouve pas trop près du point désigné, on
// autorise l'avancé du player
if (Vector3.Distance(hit.point, transform.position) > distStop)
{
float motor = Input.GetAxis("Vertical") * Speed;
transform.Translate(transform.forward * motor, Space.World);
motor = Input.GetAxis("Horizontal") * Speed; //On peut supprimer ces 2 lignes pour que le perso se déplace
transform.Translate(transform.right * motor, Space.World); //Autrement que en tournant autour du curseur
}
}
}
Re: Problème de perso/manette
S'il vous plait
Re: Problème de perso/manette
Hello,
Oui c'est normal, tu es dans le repère World. Il faut travailler en repère local pour que ton perso avance droit devant quelque soit son orientation.
Normalement il te suffit de remplacer tes Vector3.forward et Vector3.right par transform.forward et transform.right (repère local).
Oui c'est normal, tu es dans le repère World. Il faut travailler en repère local pour que ton perso avance droit devant quelque soit son orientation.
Normalement il te suffit de remplacer tes Vector3.forward et Vector3.right par transform.forward et transform.right (repère local).