Problème de perso/manette

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
BlizZ
Messages : 38
Inscription : 22 Déc 2018 20:59

Re: Problème de perso/manette

Message par BlizZ » 24 Jan 2019 19:17

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

        }

    }
}

BlizZ
Messages : 38
Inscription : 22 Déc 2018 20:59

Re: Problème de perso/manette

Message par BlizZ » 26 Jan 2019 14:32

S'il vous plait :)

BlizZ
Messages : 38
Inscription : 22 Déc 2018 20:59

Problème vue/déplacement manette

Message par BlizZ » 01 Fév 2019 20:57

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

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Problème de perso/manette

Message par Moi 1971 » 02 Fév 2019 10:51

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

BlizZ
Messages : 38
Inscription : 22 Déc 2018 20:59

Re: Problème de perso/manette

Message par BlizZ » 02 Fév 2019 15:02

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 !

BlizZ
Messages : 38
Inscription : 22 Déc 2018 20:59

Re: Problème de perso/manette

Message par BlizZ » 02 Fév 2019 16:42

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 ?
        }
    }
}

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

Re: Problème de perso/manette

Message par Max » 02 Fév 2019 16:48

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

BlizZ
Messages : 38
Inscription : 22 Déc 2018 20:59

Re: Problème de perso/manette

Message par BlizZ » 02 Fév 2019 17:28

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.

Répondre

Revenir vers « (C#) CSharp »