Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gérer la position du curseur

Unity3d

Sujet résolu
    2 mai 2023 à 13:08:34

    Bonjour à tous.

    J'ai besoin d'un petit coup de main pour une fonctionnalité toute bête mais que je n'arrive pas à régler

    Sous Unity 2021. J'ai une camera accrochée à un personnage.

    Il est possible de changer l'orientation de la caméra en restant appuyé sur un des boutons de la souris

    Lors d'un changement d'orientation je cache le curseur avec

    Cursor.lockState = CursorLockMode.Locked;

    et le ré-affiche lorsqu'on on relâche le bouton de la souris avec

    Cursor.lockState = CursorLockMode.None;

    Ça marche bien, seulement le curseur ce retrouve placé au milieu et j'aimerai qu'il garde la position d'avant le clique sur la souris.

    Je ne vois pas d'option qui fasse cela.

    J'arrive bien à récupérer la position du curseur avant le clique mais je ne vois pas comment redonner cette position au curseur.

    ça me parait simple pourtant je bataille sur ce petit problème

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2023 à 10:51:21

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        4 mai 2023 à 9:49:31

        Super !

        Ça marche nickel :) Merci bacelar

        Je vous mets une partie du code pour ceux que ça intéresse

        Tout d'abord il m'a fallu installer le package InputSystem

        Ce petit bout de code permet de cacher le curseur de la souris quand l'état d'un des boutons est enfoncé puis de le ré-afficher lorsqu'on relâche le bouton

        using UnityEngine.InputSystem;
        using UnityEngine.InputSystem.LowLevel;
        
        public class CameraHolderController : MonoBehaviour
        {
        	private bool _leftClick = false, _rightClick = false;
        	private Vector2 _cursorPosition;
        	
        	private void Update()
        	{
        		if(!_leftClick && !_rightClick)
        			_cursorPosition = Input.mousePosition;
        			
        		// Clique du bouton droit de la souris
        		if (Input.GetMouseButton(1))
        		{
        			_rightClick = true;
        			Cursor.lockState = CursorLockMode.Locked;
        		}
        		// Clique du bouton droit de la souris
        		else if (Input.GetMouseButton(0))
        		{
        			_leftClick = true;
        			Cursor.lockState = CursorLockMode.Locked;
        		}
        		
        		// Vérification des état des boutons de la souris
                if (Input.GetMouseButtonUp(0))
                    _leftClick = false;
                if (Input.GetMouseButtonUp(1))
                    _rightClick = false;
        		
        		// Réaffichage du curseur
                if (!_rightClick &&  !_leftClick)
                {
                    Cursor.lockState = CursorLockMode.None;
                    Mouse.current.WarpCursorPosition(_cursorPosition);
                    InputState.Change(Mouse.current.position, _cursorPosition);
                }
        	}
        }



        • Partager sur Facebook
        • Partager sur Twitter
          3 août 2023 à 22:22:04

          Bonjour, j'ai essayé cette fonction, seulement mon curseur met quelques instants avant de suivre à nouveau les mouvements de la souris.

          Avez-vous le même soucis ?

          • Partager sur Facebook
          • Partager sur Twitter

          Gérer la position du curseur

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown