Page 3 sur 4

Re: Problème de perso/manette

Publié : 19 Jan 2019 16:37
par BlizZ
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

Publié : 19 Jan 2019 16:57
par Max
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).

Re: Problème de perso/manette

Publié : 19 Jan 2019 19:17
par BlizZ
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.

Problème direction personnage manette c#

Publié : 23 Jan 2019 11:49
par BlizZ
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 :

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#

Publié : 23 Jan 2019 14:32
par Sebela
Hello,

Mmm, impression de déjà-vu :0 ça ne serait pas la suite de ce topic ? :perv:
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);
     }
 }
Et le tour est joué !

Re: Problème direction personnage manette c#

Publié : 23 Jan 2019 15:44
par BlizZ
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 :

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);

    }
}
Image

Image

Image

Effectivement j'ai reposé ma question car l'autre personne m'avait oublié je crois :cote:

Re: Problème de perso/manette

Publié : 23 Jan 2019 19:04
par Sebela
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 :

Code : Tout sélectionner

 var input = new Vector3(Input.GetAxis("RightJoystickX"), 0, Input.GetAxis("RightJoystickY"));
 if(input != Vector3.zero)
 {
   transform.forward = input;
 }
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 !

Re: Problème de perso/manette

Publié : 23 Jan 2019 20:40
par BlizZ
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 :

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;
        }
    }
}
Souris :

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

        }

    }
}
Merci de l'aide.

Re: Problème de perso/manette

Publié : 24 Jan 2019 13:15
par BlizZ
S'il vous plait :)

Re: Problème de perso/manette

Publié : 24 Jan 2019 19:01
par Sebela
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).