Page 4 sur 4

Re: Problème de perso/manette

Publié : 24 Jan 2019 19:17
par BlizZ
Alors quand mon perso est de dos et fac a la caméra ca marche, donc si je met mion joystick vers la gauche il y ira biens vers la gauche de l'ecran (pareil pour la droite ou devant et derrière). Par contre si mon perso est sur le coté, donc n'est pas face a la caméra nis de dos, la les touches s'inversent..

Code :

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(transform.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime);
        transform.Translate(transform.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;
        }
    }
}
Et pour le perso a la souris, il n'utilise pas de Vector3.forward ou Vector3.right, il n'utilise que un Vector3.Distance..

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

Publié : 26 Jan 2019 14:32
par BlizZ
S'il vous plait :)

Problème vue/déplacement manette

Publié : 01 Fév 2019 20:57
par BlizZ
Bonjour,

Je suis désolé de spam le forum mais je suis vraiment bloqué sur mon jeu et depuis quasiment 1 voir 2 mois.. Beaucoup de personne m'ont aidé mais au final ca ne fonctionne pas vraiment car c'est incontrolable. Croyais moi que ce n'est pas super cool pour moi de redemaneder de l'aide et de ne pas reussir à me débrouiller tout seul :/
Mon problème est le suivant : je n'arrive pas a faire des déplacement comme je le voudrai. J'aimerai que mon perso manette se déplace avec le joystick de gauche. Ca je pense avoir réussi.
Mais le probleme intervient quand je rajoute la possibilité de changer la direction de la vu du personnage. Mon personnage fait soit n'importe quoi soit des mouvement étrange et au final il est incontrolable. Je voudrais que mon perso manette puisse changer la direction de sa vu (avec son joystick droit) mais sans que cela modifie la direction dans la quelle il se déplace. Je veux que les deux scripts n'aient aucune influence entre eux.

Pour l'instant mon perso manette a ce script mais ca ne fonctionne pas vraiment :

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(transform.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime);
        transform.Translate(transform.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;
        }
    }
}
Et mes inputs sont :

Image

Image

Voila je n'ai aucune idée de la difficulté du programme mais si je n'arrive pas a résoudre ce probleme je suis un peu bloqué :/

Merci de votre aide :)

Re: Problème de perso/manette

Publié : 02 Fév 2019 10:51
par Moi 1971
Bonjour,
"var input = new..." C'est pas du C# mais du JavaScript(Obsolète)

De plus, dans l'historique de ce fil de discussion il t'a été proposé de remplacer "Vector3.forward" par "Vector3.right".
Donc faut pas revenir à "Vector3.forward". Tu as dû réutiliser le vieux code.

Pour faire simple :
Le joystick Gauche doit DÉPLACER le transforme SANS JAMAIS utiliser "forward".
Le joystick Droit doit ORIENTER le transforme EN FONCTION du "forward".

Bon codage

Re: Problème de perso/manette

Publié : 02 Fév 2019 15:02
par BlizZ
Bonjour,

J'avais essayé de remplacer mais ca ne donner rien de très bon et donc j'ai remis comme avant..
Cette après midi je réessaye !

Re: Problème de perso/manette

Publié : 02 Fév 2019 16:42
par BlizZ
Bon je suis désolé mais incompréhensible..

Déjà je n'arrive pas a savoir par quoi je dois remplacer le "var input = new...".
Ensuite j'ai l'impression de ne pas utiliser de "Vector3.forwad" donc je ne peux pas le remplacer :/
Si je n'utilise pas forward pour le joystick gauche alors j'utilise quoi ??

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(transform.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime); //je ne dois pas mettre de forward mais je met quoi a la place alors ?
        transform.Translate(transform.right * Input.GetAxis("LeftJoystickY") * 500 * Time.deltaTime);

        //Vue
        var input = new Vector3(Input.GetAxis("RightJoystickX"), 0, Input.GetAxis("RightJoystickY"));   //Je remplace par quoi ?
        if (input != Vector3.zero)
        {
            transform.forward = input;  //Est ce que c'est comme ca que je dois utiliser le vecteur forward ?
        }
    }
}

Re: Problème de perso/manette

Publié : 02 Fév 2019 16:48
par Max
Bonjour,

une des réponses à toutes ces interrogations est qu'il serait peut être bon de laisser ton projet de coté quelques temps pour te consacrer à un apprentissage des bases. Tu y verrais beaucoup plus clair après, surtout sur des questions aussi 'basiques'. Et tu serais bien moins dépendant des autres. C'est pas un reproche hein, mais un conseil avisé ;)

Re: Problème de perso/manette

Publié : 02 Fév 2019 17:28
par BlizZ
Bonjour,

Effectivement ca pourrai etre une solution mais quand le sujet n'est pas concret j'ai un peu plus du mal a m'interesser :/Et je ne sais pas vraiment ou chercher des cours de base gratuitement.
Pour l'instant je regardais des tutos et/ou des forums et j'adaptais ou rajoutais des portions de code pour mon jeu.
Donc mon projet actuel est plutot avancé et j'ai réussi à faire d'autre chose mais la le déplacement de mon perso à la manette me bloque vraiment car je n'arrive pas à trouver de solution.